Scale Out Owncloud 高可用(1)

上一篇文章講述瞭如何部署Owncloud單機版《企業私有云Owncloud(2)-單機版 安裝和配置》,只是作個demo,不適用於真實的企業應用,一方面是性能問題,大量用戶訪問會形成前端Web Server資源不夠處理;另外一方面,易出現單點故障,中間任何一個component故障,owncloud都沒法繼續提供服務。所以在真實企業應用中須要部署高可用版本,在OwncloudServerAdminManual.pdf中 Chapter10.2 Scaling Across Multiple Machines介紹了三個部件的高可用。html

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


以下是我測試環境中Scale-out Owncloud的部署方案,共有6臺Servernode

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

Owncloud1, mysql1,Apache 部署在同一臺機器上,10.45.45.6linux

Owncloud2, mysql2,Apache 部署在同一臺機器上,10.45.45.8sql

Owncloud3, Apache部署在10.45.45.1,做爲backup server,即Owncloud1和Owncloud2同時故障時,Owncloud3會接管數據庫

NDB1, Mysql Cluster 存儲引擎1, 10.45.45.9socket

NDB2, Mysql Cluster 存儲引擎2, 10.45.45.10tcp

p_w_picpath

本篇分爲三部分,先從MySQL集羣開始,而後是Owncloud集羣,最後是Haproxy的配置ide

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集羣搭建!

相關文章
相關標籤/搜索