上一篇文章讲述了如何部署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

Scale Out Owncloud 高可用(1)

本篇分为三部分,先从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

 

启动管理节点 [[email protected] ~]# 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


[[email protected] ~]# 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服务,[[email protected] bin]#/usr/local/mysql/bin/mysqld_safe --user=mysql &

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

至此,NDB Cluster 部署完成    

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

[[email protected] ~]# 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,如需转载请自行联系原作者

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2021-09-28
  • 2021-12-20
猜你喜欢
  • 2022-01-19
  • 2021-06-28
  • 2021-10-20
  • 2021-11-12
  • 2021-12-27
相关资源
相似解决方案