MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6
Haproxy 實現數據庫的負載均衡,健康監測.權重分發.
IP規劃:
192.168.0.221?os---221?????db 192.168.0.222?os---222?????db 192.168.0.223?os---223?????db 192.168.0.224?os---224?????haproxy 192.168.0.225?os---225?????haproxy VIP:?192.168.0.226準備:
三臺主機安裝之前,必須先設置selinux 、hostname 和 ?iptables; 如下:
(1)禁止selinux selinux=Disabled(2)配置防火墻? service?iptables?stop? chkconfig??iptables??off iptables??-F(3)編輯hosts文件 vi?/etc/hosts 192.168.0.221?os---221 192.168.0.222?os---222 192.168.0.223?os---223(4)reboot1.添加mariadb.repo,yum 源
[mariadb] name?=?MariaDB baseurl?=?http://yum.mariadb.org/10.0/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1yum?makecache2.安裝
yum?install?MariaDB-Galera-server?MariaDB-client?galera3. 在三臺主機上初始化mariadb,并且創建集群賬戶
? ?All ?nodes:
初始化如下: service?mysql?start mysql_secure_installation??#提示創建密碼,root是否遠程登錄,刪除test數據庫。授權賬戶如下: mysql??-p GRANT?ALL?PRIVILEGES?ON?*.*?TO?'cp'@'%'?IDENTIFIED?BY?'123'?WITH?GRANT?OPTION; flush?privileges; quit然后停止All?Nodes的數據 service?mysql?stop? ? ? ? ?
4.建立集群:Setup Cluster Configuration on Client221?
保存退出后,執行
/etc/init.d/mysql?bootstrap 或者: /usr/sbin/mysqld??--wsrep-new-cluster?--user=mysql??&說明:bootstrap的功能
mysql命令調用/usr/sbin/mysqld?? bootstrap相當于--wsrep-new-cluster??--user=mysql??&? ? ?
5. 建立集群:Setup Cluster Configuration on Client222,只有三處和上面不同
[mariadb] query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.221,192.168.0.223 wsrep_cluster_name='cp' wsrep_node_address='192.168.0.222' wsrep_node_name='os6---222' wsrep_sst_method=rsync wsrep_sst_auth=cp:123最后
/etc/init.d/mysql?start? ? ?
6. 建立集群:Setup Cluster Configuration on Client223,同樣只有三處和上面不同
? ? ? ?
[mariadb] query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.221,192.168.0.222 wsrep_cluster_name='cp' wsrep_node_address='192.168.0.223' wsrep_node_name='os6---223' wsrep_sst_method=rsync wsrep_sst_auth=cp:123最后
?/etc/init.d/mysql?start7. 測試集群
省略
8.安裝haproxy,分別在192.168.0.224和192.168.0.225
yum??install??haproxy??-y9.配置haproxy,編輯/usr/local/haproxy/etc/haproxy.cfg,分別在192.168.0.224和192.168.0.225
mv???/usr/local/haproxy/etc/haproxy.cfg??/usr/local/haproxy/etc/haproxy.cfg.bak vi??/usr/local/haproxy/etc/haproxy.cfgglobal log?127.0.0.1?local0?notice user?haproxy group?haproxydefaults log?global retries?2 timeout?connect?1000 timeout?server?5000 timeout?client?5000listen?mariadb-cluster bind?0.0.0.0:3306 mode?tcp option?mysql-check?user?haproxy balance?roundrobin server?DB221?192.168.0.221:3306?check server?DB222?192.168.0.222:3306?check server?DB223?192.168.0.223:3306?checklisten?webinterface bind?0.0.0.0:8080 mode?http stats?enable stats?uri???/haproxy/stats stats?realm?Strictly\?Private stats?auth?haproxy:haproxy10.在數據庫上建立一個用戶,用于haproxy對db的檢測
主意: 再一臺數據庫上執行即可.不必要再3臺DB上全部執行.
CREATE?USER?'haproxy'@'192.168.0.224'; CREATE?USER?'haproxy'@'192.168.0.225'; FLUSH??PRIVILEGES;11.啟動haproxy
service?haproxy??start開機啟動
echo?"/etc/init.d/haproxy??start"??>>/etc/rc.local訪問haproxy的檢測頁面:
224:??http://192.1680.224/haproxy/stats???????????user:haproxy??pass:haproxy 225:??http://192.168.0.225/haproxy/stats??????????user:haproxy??pass:haproxy試圖登陸mysql:
mysql?-h?192.168.0.224?-P?3306?-p mysql?-h?192.168.0.225?-P?3306?-p測試:
任意關閉其中一個數據庫/兩個數據庫,測試連通性
12.安裝keepalived
腳本安裝:省略
13.配置主haproxy(192.168.0.224)的keepalived配置文件
vi??/etc/keepalived/keepalived.confglobal_defs?{notification_email?{15011254881@139.com}notification_email_from?15614119390@163.comsmtp_server?smtp.163.comsmtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_script?chk_haproxy?{ script?"killall?-0?haproxy" interval?1 weight?2 } vrrp_instance?VI_1?{state?MASTERinterface?eth0virtual_router_id?8priority?100advert_int?1authentication?{auth_type?PASSauth_pass?1111}virtual_ipaddress?{192.168.0.226}track_script?{chk_haproxy } }14.配置備haproxy(192.168.0.225)的keepalived配置文件
global_defs?{notification_email?{15011254881@139.com}notification_email_from?15614119390@163.comsmtp_server?smtp.163.comsmtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_script?chk_haproxy?{ script?"killall?-0?haproxy" interval?1 weight?2 } vrrp_instance?VI_1?{state?SLAVEinterface?eth0virtual_router_id?8priority?99advert_int?1authentication?{auth_type?PASSauth_pass?1111}virtual_ipaddress?{192.168.0.226}track_script?{chk_haproxy } }15.啟動haproxy和keepalived,測試haproxy的高可用
service??haproxy??start? service??keepalived?start測試過程省略.
16.授權mysql的root用戶可以在任意的IP地址下登陸
mysql??-p? >grant??all??privileges??on?*.*??to??root@'%'??identified??by?'123'??with?grant?option; >flush?privileges;17.測試登陸,查看是否每次重新連接mysql實例,是否達到負載均衡的效果
[root@os6---222?xinetd.d]#?mysql?-h?192.168.0.226??-p Enter?password: MariaDB?[(none)]>?show??variables??like??'wsrep_node_name'; +-----------------+-----------+ |?Variable_name???|?Value?????| +-----------------+-----------+ |?wsrep_node_name?|?os6---222?| +-----------------+-----------+ 1?row?in?set?(0.00?sec) MariaDB?[(none)]>?exit Bye[root@os6---222?xinetd.d]#?mysql?-h?192.168.0.226??-p Enter?password: MariaDB?[(none)]>?show??variables??like??'wsrep_node_name'; +-----------------+-----------+ |?Variable_name???|?Value?????| +-----------------+-----------+ |?wsrep_node_name?|?os6---223?| +-----------------+-----------+ 1?row?in?set?(0.00?sec) MariaDB?[(none)]>?exit Bye[root@os6---222?xinetd.d]#?mysql?-h?192.168.0.226??-p Enter?password: MariaDB?[(none)]>?show??variables??like??'wsrep_node_name'; +-----------------+-----------+ |?Variable_name???|?Value?????| +-----------------+-----------+ |?wsrep_node_name?|?os6---221?| +-----------------+-----------+ 1?row?in?set?(0.01?sec)轉載于:https://blog.51cto.com/yujianglei/1726752
總結
以上是生活随笔為你收集整理的MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js面向对象的五种写法
- 下一篇: objective-c 逐帧动画