上一篇文章講述瞭如何部署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
本篇分爲三部分,先從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集羣搭建!