Scale Out Owncloud 高可用(1)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

上一篇文章讲述了如何部署Owncloud单机版《企业私有云Owncloud(2)-单机版 安装和配置》,只是做个demo,不适用于真实的企业应用,一方面是性能问题,大量用户访问会造成前端Web Server资源不够处理;另一方面,易出现单点故障,中间任何一个component故障,owncloud都无法继续提供服务。因此在真实企业应用中需要部署高可用版本,在OwncloudServerAdminManual.pdf中 Chapter10.2 Scaling Across Multiple Machines介绍了三个部件的高可用。

- Application layer  -----Haproxy Apache    
- Database Layer  -----Mysql NDB     
- Storage Layer   -----GlusterFS


如下是我测试环境中Scale-out Owncloud的部署方案,共有6台Server

Haproxy Server: 既是Apache Server的proxy,也是Mysql Server的Proxy

Owncloud1, mysql1,Apache 部署在同一台机器上,10.45.45.6

Owncloud2, mysql2,Apache 部署在同一台机器上,10.45.45.8

Owncloud3, Apache部署在10.45.45.1,作为backup server,即Owncloud1和Owncloud2同时故障时,Owncloud3会接管

NDB1, Mysql Cluster 存储引擎1, 10.45.45.9

NDB2, Mysql Cluster 存储引擎2, 10.45.45.10

image

本篇分为三部分,先从MySQL集群开始,然后是Owncloud集群,最后是Haproxy的配置

1, MySQL NDB Cluster

分为三个component:

1), management node,管理其它节点,开启、关闭、备份。要启动Cluster,首先是管理节点,然后是NDBD节点,最后是SQL节点。

2), Data node,存储cluster数据

3), SQL node,提供mysql服务,使用ndbcluster engine

到官网http://dev.mysql.com/downloads/cluster 下载包,mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz,无需编译



1.1 管理节点

只需两个文件,直接从解压下来的文件包复制过去

cp bin/ndb_mgm* /usr/local/bin    
chmod +x /usr/local/bin/ndb_mgm*

编辑配置文件 /var/lib/mysql-cluster/config.ini

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

 

[tcp default]

portnumber=2202

 

[ndb_mgmd]

hostname=10.45.45.7

datadir=/var/lib/mysql-cluster

 

[ndbd]

hostname=10.45.45.9

datadir=/usr/local/mysql/data

 

[ndbd]

hostname=10.45.45.10

datadir=/usr/local/mysql/data

 

[mysqld]

hostname=10.45.45.8

 

[mysqld]

hostname=10.45.45.6

 

启动管理节点 [root@Brohaproxy ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial 【初次时需要添加initial,之后就无需再加initial参数】

1.2 Data Node

Data node只需两个文件

cp bin/ndbd /usr/local/bin/ndbd    
cp bin/ndbmtd /usr/local/bin/ndbmtd     
chmod +x bin/ndbd /usr/local/bin/ndbd     
chmod +x bin/ndbmtd /usr/local/bin/ndbmtd

 

Data node 和 SQL 节点的/etc/my.cnf 配置文件是完全一样的

[mysqld]

ndbcluster

datadir=/usr/local/mysql

socket=/var/lib/mysql/mysql.sock

ndb-connectstring=10.45.45.7

[mysql_cluster]

ndb-connectstring=10.45.45.7


[root@localhost ~]# ndbd --initial 【初次时需要添加initial】     
2015-05-08 10:17:48 [ndbd] INFO     -- Angel connected to '10.45.45.7:1186'     
2015-05-08 10:17:48 [ndbd] INFO     -- Angel allocated nodeid: 3

 

  1.3 SQL节点

useradd mysql

tar mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz –C /usr/local/

mv mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64/ mysql/

chown -R root /usr/local/mysql    
chown -R mysql /usr/local/mysql/data     
chgrp -R mysql /usr/local/mysql

 

创建系统数据库, /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

 

启动mysql服务,[root@localhost bin]#/usr/local/mysql/bin/mysqld_safe --user=mysql &

-------------------------------------------------------

至此,NDB Cluster 部署完成    

登录到管理节点上看各个节点的状态

[root@Brohaproxy ~]# ndb_mgm    
-- NDB Cluster -- Management Client --     
ndb_mgm> show     
Connected to Management Server at: localhost:1186     
Cluster Configuration     
---------------------     
[ndbd(NDB)]     2 node(s)     
id=2    @10.45.45.9  (mysql-5.6.24 ndb-7.4.6, Nodegroup: 0)     
id=3    @10.45.45.10  (mysql-5.6.24 ndb-7.4.6, Nodegroup: 0, *)

[ndb_mgmd(MGM)] 1 node(s)    
id=1    @10.45.45.7  (mysql-5.6.24 ndb-7.4.6)

[mysqld(API)]   2 node(s)    
id=4    @10.45.45.8  (mysql-5.6.24 ndb-7.4.6)     
id=5    @10.45.45.6  (mysql-5.6.24 ndb-7.4.6)


添加自启动,编辑/etc/rc.local加上

/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

注意要加上绝对路径


参考文档:http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

-------------------------------------------------------------------------------------------

接下来如上一篇文章《企业私有云Owncloud(2)-单机版 安装和配置》中所述,需要创建Owncloud需要的数据库用户名密码

mysql>CREATE USER ‘cloudtest'@'localhost' IDENTIFIED BY 'password';   
mysql>CREATE DATABASE IF NOT EXISTS owncloud;   
mysql>GRANT ALL PRIVILEGES ON owncloud.* TO 'username'@'localhost' IDENTIFIED BY 'password';

mysql>flush priveleges;

mysql>quit;

注意:由于此环境中Owncloud是通过Haproxy访问SQL的,所以需要给cloudtest用户赋予远程访问的权限,否则owncloud配置会报错

mysql> grant all privileges on *.* to 'cloudtest'@'%' identified by '123456' with grant option;

-------------------------------------------------------------------------------------------

MySQL Cluster就到这里,由于在初次配置Owncloud时需要指定MySQL IP, 因此需要使用Proxy代理,让MySQL对外只提供一个IP。常见的代理有HAproxy和MySQL Proxy,这里由于我的Apache Server也使用HAProxy。为了部署方便,也使用HAproxy做MySQL Cluster代理。需要在haproxy修改配置文件haproxy.cfg

global    
    daemon     
    maxconn 256     
    log 127.0.0.1   local0

defaults    
    mode http     
    stats   uri     /haproxy-stats     
    timeout connect 5000ms     
    timeout client 50000ms     
    timeout server 50000ms

listen mysql    
    bind 0.0.0.0:3306     
    mode tcp     
    option tcplog     
    balance roundrobin     
    server mysql1 10.45.45.6:3306 weight 1 check     
    server mysql2 10.45.45.8:3306 weight 1 check

然后启动haproxy进程: haproxy –f haproxy.cfs

ps,我们在配置Owncloud数据库的时候使用10.45.45.7(HAproxy)IP,这样任何一台MySQL故障,都不会影响Owncloud正常运行。

 

由于篇幅限制,本篇就到这里,有问题的可以留言,下一篇讲Owncloud集群搭建!





本文转自 taojin1240 51CTO博客,原文链接:http://blog.51cto.com/taotao1240/1652334,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
关系型数据库 MySQL 网络安全
利用ansbile部署lamp并部署Discuz(非分布式)
利用ansbile部署lamp并部署Discuz(非分布式),实验准备,设置ansbile的hosts文件,在192.168.115.148上完成相关准备,编写roles,执行
53 0
|
存储 Kubernetes 关系型数据库
k8s集群安装部署单机MySQL(使用StorageClass作为后端存储)
k8s集群安装部署单机MySQL(使用StorageClass作为后端存储)
644 0
k8s集群安装部署单机MySQL(使用StorageClass作为后端存储)
|
3月前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
43 0
|
4月前
|
存储 关系型数据库 应用服务中间件
私有云盘:lamp部署nextcloud+高可用集群
lamp部署nextcloud+高可用集群,配置mariadb主从复制,台主机下载mariadb,配置nfs让web服务挂载,web 服务器 配置 lamp,配置nginx反向代理&&haproxy&&keepalived。
155 0
|
存储 Linux 网络安全
CentOS7下搭建ScaleIO分布式存储集群
CentOS7下搭建ScaleIO分布式存储集群
429 0
CentOS7下搭建ScaleIO分布式存储集群
|
存储 关系型数据库 Linux
在Centos7环境下进行搭建postgresql-xl集群环境
在Centos7环境下进行搭建postgresql-xl集群环境
115 0
在Centos7环境下进行搭建postgresql-xl集群环境
|
分布式计算 Hadoop Java
Centos7 搭建单机Spark分布式集群
Centos7 搭建单机Spark分布式集群
237 0
Centos7 搭建单机Spark分布式集群
|
存储 应用服务中间件 Linux
CentOS7中 nginx 搭建 FastDFS 分布式文件存储系统
CentOS7中 nginx 搭建 FastDFS 分布式文件存储系统
CentOS7中 nginx 搭建 FastDFS 分布式文件存储系统
|
存储 关系型数据库 MySQL
在Kubernetes上运行高可用的WordPress和MySQL
WordPress是用于编辑和发布Web内容的主流平台。在本教程中,我将逐步介绍如何使用Kubernetes来构建高可用性(HA)WordPress部署。 WordPress由两个主要组件组成:WordPress PHP服务器和用于存储用户信息、帖子和网站数据的数据库。
2039 0
|
关系型数据库 MySQL 数据库