利用keepalived和haproxy配置mysql的高可用負載均衡
轉載http://www.cnblogs.com/tae44/p/4717334.html
實驗系統:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64)
實驗前提:防火牆和selinux都關閉
實驗說明:本實驗共有4臺主機,IP分配如拓撲
實驗軟體:keepalived-1.2.19 haproxy-1.5.14 mariadb-10.0.20
下載地址:http://pan.baidu.com/s/1bnnYiMr
實驗拓撲:
一、安裝mariadb
1.在兩臺資料庫伺服器安裝:
tar xf mariadb-10.0.20-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local/ ln -sv mariadb-10.0.20-linux-x86_64 mysql useradd -r mysql mkdir -pv /mydata/data chown -R mysql.mysql /mydata/data/ cd mysql/ chown -R root.mysql . scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ cp support-files/my-large.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chkconfig--add mysqld chkconfig mysqld on
2.配置主主複製:
19.74:
vim /etc/my.cnf----------------------------------------------->
[mysqld]
server-id = 1
datadir = /mydata/data
log-bin = /mydata/data/mysql1-bin
binlog_format = ROW
relay_log = /mydata/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 1
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1 按 Ctrl+C 複製程式碼
19.76:
----------------------------------------------->
[mysqld]
server-id = 2
datadir = /mydata/data
log-bin = /mydata/data/mysql2-bin
binlog_format = ROW
relay_log = /mydata/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 2
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1 按 Ctrl+C 複製程式碼
3.建立具有複製許可權的使用者:
19.74:
service mysqld start /usr/local/mysql/bin/mysql ------------------------------------------> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'master'@'192.168.19.76' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
19.76:
service mysqld start /usr/local/mysql/bin/mysql ------------------------------------------> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'master'@'192.168.19.74' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
4.檢視二進位制位置:
19.74:
SHOW MASTER LOGS;
19.76上使用相同命令:
5.配置雙主:
19.74:
CHANGE MASTER TO MASTER_HOST='192.168.19.76',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql2-bin.000001',MASTER_LOG_POS=1112; START SLAVE;
19.76:
CHANGE MASTER TO MASTER_HOST='192.168.19.74',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql1-bin.000001',MASTER_LOG_POS=1112; START SLAVE;
二、編譯安裝haproxy
1.在19.66和19.79上編譯安裝haproxy:
tar xf haproxy-1.5.14.tar.gz cd haproxy-1.5.14
yum install -y gcc make TARGET=linux2628 ARCH=x86_64 //根據自己主機設定makeinstall SBINDIR=/usr/sbin/ MANDIR=/usr/share/man/ DOCDIR=/usr/share/doc/
2.提供啟動指令碼:
按 Ctrl+C 複製程式碼 vim /etc/init.d/haproxy--------------------------------------------------->
#!/bin/sh
#
# haproxy
#
# chkconfig: - 85 15
# description: HAProxy is a free, very fast and reliable solution \
# offering high availability, load balancing, and \
# proxying for TCP and HTTP-based applications
# processname: haproxy
# config: /etc/haproxy/haproxy.cfg
# pidfile: /var/run/haproxy.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
exec="/usr/sbin/haproxy"
prog=$(basename $exec)
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
cfgfile=/etc/haproxy/haproxy.cfg
pidfile=/var/run/haproxy.pid
lockfile=/var/lock/subsys/haproxy
check() {
$exec -c -V -f $cfgfile $OPTIONS
}
start() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
echo -n $"Starting $prog: "
# start it up here, usually something like "daemon $exec"
daemon $exec -D -f $cfgfile -p $pidfile $OPTIONS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
# stop it here, often "killproc $prog"
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
stop
start
}
reload() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
echo -n $"Reloading $prog: "
$exec -D -f $cfgfile -p $pidfile $OPTIONS -sf $(cat $pidfile)
retval=$?
echo
return $retval
}
force_reload() {
restart
}
fdr_status() {
status $prog
}
case "$1" in
start|stop|restart|reload)
$1
;;
force-reload)
force_reload
;;
check)
check
;;
status)
fdr_status
;;
condrestart|try-restart)
[ ! -f $lockfile ] || restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
exit 2
esac
<---------------------------------------------------
chkconfig --add haproxy
chkconfig haproxy on
chmod +x /etc/init.d/haproxy 按 Ctrl+C 複製程式碼
3.提供配置檔案:
按 Ctrl+C 複製程式碼 mkdir /etc/haproxymkdir /var/lib/haproxy
useradd -r haproxy
vim /etc/haproxy/haproxy.cfg
----------------------------------------------------------------------->
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode tcp //haproxy執行模式
log global
option dontlognull
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 600 //最大連線數
listen stats //配置haproxy狀態頁
mode http
bind :6677 //找一個比較特殊的埠
stats enable
stats hide-version //隱藏haproxy版本號
stats uri /haproxyadmin?stats //一會用於開啟狀態頁的uri
stats realm Haproxy\ Statistics //輸入賬戶密碼時的提示文字
stats auth admin:admin //使用者名稱:密碼
stats admin if TRUE //開啟狀態頁的管理功能
frontend main *:3306 //這裡為了實驗方便,使用3306埠
default_backend mysql //後端伺服器組名
backend mysql
balance leastconn //使用最少連線方式排程
server m1 192.168.19.74:3306 check port 3306 maxconn 300
server m2 192.168.19.76:3306 check port 3306 maxconn 300 按 Ctrl+C 複製程式碼
4.啟動日誌:
vim /etc/rsyslog.conf -----------------------------------------------------> # Provides UDP syslog reception //去掉下面兩行註釋,開啟UDP監聽 $ModLoad imudp $UDPServerRun 514 local2.* /var/log/haproxy.log //新增此行
<-----------------------------------------------------
service rsyslog restart
5.啟動測試haproxy:
service haproxy start
netstat -tnlp
6.在19.74上建立遠端登入賬號:
GRANT ALL ON *.* TO 'jason'@'192.168.19.%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
7.分別在19.66和19.79上登入mysql,若都能連線成功則繼續往下:
yum -y install mysql //如果沒有mysql客戶端則執行此命令
mysql -ujason -p123456 -h192.168.19.66 //在19.66上登入
mysql -ujason -p123456 -h192.168.19.79 //在19.79上登入
三、安裝keepalived
1.在19.66和19.79上編譯安裝keepalived:
tar xf keepalived-1.2.19.tar.gz cd keepalived-1.2.19
yum -y install openssl-devel ./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64/ //核心版本換成自己主機的 uname -a 檢視核心 make && make install chkconfig --add keepalived chkconfig keepalived on
2.在19.66上配置:
按 Ctrl+C 複製程式碼 vim /etc/keepalived/keepalived.conf----------------------------------------------------->
! Configuration File for keepalived
global_defs { //此段暫時略過,下同
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/etc/keepalived/chk.sh" //檢查haproxy的指令碼
interval 2 //每兩秒檢查一次
}
vrrp_instance VI_1 {
state BACKUP //定義為BACKUP節點
nopreempt //開啟不搶佔
interface eth0
virtual_router_id 51
priority 100 //開啟了不搶佔,所以此處優先順序必須高於另一臺
advert_int 1
authentication {
auth_type PASS
auth_pass abcd
}
virtual_ipaddress {
192.168.19.150 //配置VIP
}
track_script {
chk_haproxy //呼叫檢查指令碼
}
notify_backup "/etc/init.d/haproxy restart"
notify_fault "/etc/init.d/haproxy stop"
} 按 Ctrl+C 複製程式碼
3.在19.79上配置:
vim /etc/keepalived/keepalived.conf -----------------------------------------------------> ! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.19.150 } track_script { chk_haproxy } notify_backup "/etc/init.d/haproxy restart" notify_fault "/etc/init.d/haproxy stop" }
4.在兩臺機器上建立chk.sh檔案:
按 Ctrl+C 複製程式碼 vim /etc/keepalived/chk.sh------------------------------------------------>
#!/bin/bash
#
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/etc/init.d/keepalived stop
fi
<------------------------------------------------
chmod +x /etc/keepalived/chk.sh 按 Ctrl+C 複製程式碼
5.在19.66和19.79上進行測試:
service keepalived start
此處兩臺主機均配置為BACKUP,因此哪臺先執行keepalived,VIP就在哪臺上。我這裡剛開始VIP執行在19.66上,然後進行連線測試:
mysql -ujason -p123456 -h192.168.19.150
------------------------------------------->
CREATE DATABASE bokeyuan;
後端資料庫伺服器抓包:
停掉19.66的keepalived服務,讓VIP轉移到19.79上,再進行測試:
service keepalived stop //停掉19.66的keepalived服務
mysql -ujason -p123456 -h192.168.19.150
------------------------------------------->
SHOW DATABASES;
後端資料庫伺服器抓包:yum install -y tcpdump
tcpdump -n -i eth0src 192.168.19.74
網上搜的抓包方法 不知道筆者怎麼抓的(經過測試我沒抓到)
6.在瀏覽器開啟http://192.168.19.150:6677/haproxyadmin?stats,開啟haproxy狀態頁:admin/admin
ps:外部客戶的連線mysql 用vip 192.168.19.150
在19.74上關閉mysql服務,可以看到haproxy對於後端伺服器的檢測是很迅速的:
service mysqld stop
7.額外說明:
繼續之前的實驗,將19.66上的keepalived服務再次啟動,可以發現,VIP仍然在19.79上,這就是之前為什麼要配置不搶佔的原因。如果按照正常的配置,將19.66配置為MASTER,當它重啟keepalived服務後,則一定會將VIP搶回。但實際上我們並不希望這樣,因為19.79仍在正常工作,19.66沒有理由去搶奪資源,造成沒必要的資源切換。實驗演示就到這裡,謝謝大家!
相關推薦
利用keepalived和haproxy配置mysql的高可用負載均衡
轉載http://www.cnblogs.com/tae44/p/4717334.html 實驗系統:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64) 實驗前提:防火牆和selinux都關閉 實驗說明:本實驗共有4臺主機,I
搭建MySQL高可用負載均衡集群
分別是 $? 啟動腳本 hang 常見 ase 說明 配置步驟 分享 閱讀目錄1、簡介2、基本環境3、配置MySQL主主復制4、中間件簡述 4.1、Haproxy介紹 4.2、keepalived介紹5、中間件的安裝與配置(haproxy、keepalived) 5.
MMM+Amoeba搭建MySQL高可用負載均衡群集
模擬 關閉防火墻 同步服務 lan 基礎上 拓撲 編譯安裝mysql 時鐘 命令行 MySQL的主從復制和MySQL的讀寫分離兩者有著緊密聯系,首先要部署主從復制,只有主從復制完成了,才能在此基礎上進行數據的讀寫分離。MySQL的讀寫分離就是只在主服務器上寫,只在從服務器上
MySQL高可用負載均衡叢集部署
簡介 使用MySQL時隨著時間的增長,使用者量以及資料量的逐漸增加,訪問量更是劇增,最終將會使MySQL達到某個瓶頸,那麼MySQL的效能將會大大降低。這一結果也不利於軟體的推廣。 那麼如何跨過這個瓶頸,提高MySQL的併發量呢?方法有很多,分散式資料庫、讀寫分離
centos部署lvs+keepalived+apache/tomcat實現高效能高可用負載均衡
前言: 常用的負載均衡軟體有lvs、haproxy、nginx,一般lvs和keeplavied一起使用 lvs是實現負載均衡作用的,即將客戶端的需求採用特定的負載均衡演算法分發到後端的web應用伺服器上,keepalived是用來實現高可用的,即保證主lvs宕機後,從lv
LVS + KEEPALIVED + WINDOWS SERVER 2008 R2 ------高可用負載均衡
http://www.cnblogs.com/zengen/archive/2013/04/22/3028298.html 工作原理此處不作講解,自己去官方網站學習(http://www.linuxvirtualserver.org),這裡重點講如何配置!注:最好從官方
Haproxy + Pacemaker 實現高可用負載均衡(二)
Pacemaker server1 和 server2 均安裝pacemaker 和 corosync server1 和 server2 作相同配置 [root@server1 ~]# yum install -y pacemaker coros
CDH 配置Mysql高可用:主從和keepalived
問題描述:配置CDH 配置Mysql高可用,並實現和cdh無縫對接。 主從和keepalived配置步驟:網上很多,這裡就不多贅述了! 配置常用命令: 查詢mysql連線使用的是那臺伺服器: show variables like "%hostname%"; s
基於HAProxy+Keepalived高可用負載均衡web服務的搭建
1.2 epo cnblogs oba backup 保持 ica mysql redis 一 原理簡介 1.HAProxyHAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那
Haproxy + keepalived 高可用負載均衡解決方案
haproxy + keepalived文檔作者:amunlinux文檔版本:Version 1.1修改記錄:2017-04-22系統環境:CentOS 6.8 64 bitIP 信息列表: 名稱 IP -----------------------------------VIP 192.1
[轉] Haproxy、Keepalived雙主高可用負載均衡
配置過程 virtual dev gnu 文本 tpch margin amp queue http://blog.chinaunix.net/uid-25266990-id-3989321.html 在測試了Nginx+Keepalived的負載均衡後,也對Haprox
Keepalived+Haproxy搭建高可用負載均衡
eas 1.5 desc patch ble set 雙機 backend sql global_defs { notification_email { [email protected]/* */ } n
公司nginx keepalived tomcat cxf 搭建高可用負載均衡實戰系列1- keepalived安裝配置
技術分享 cnblogs start ges idt def auth div .cn 1,ip說明 vip 10.50.13.67 server1 10.50.13.68 server2 10.50.13.140 2
Keepalived+Haproxy高可用負載均衡群集
刷新 rfi opened width col vim router 一個 .com 介紹 HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,
(2)LVS+Keepalived高可用負載均衡架構原理及配置
LVS Keepalived1、keepalived 介紹2、keepalived 優缺點3、keepalived 應用場景4、keepalived 安裝配置5、keepalived+lvs 高可用6、keepalived+nginx 高可用7、keepalived 切換原理8、性能優化9、常見故障 一、k
keepalived+haproxy 高可用負載均衡叢集
案例 chkconfig NetworkManager off chkconfig iptables off cat /etc/sysconfig/selinux #例行公事四臺都要這樣selinux為disabled狀態。 #web為配置好的狀態 只有一個頁面。
Centos7.5 配置 Nginx+Keepalived 搭建高可用負載均衡
一、系統要求:[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 二、IP 地址規劃:主機名 IP VIP linux-node1 192.168.10.10 192.168.1
Centos7.5 配置 Nginx+Keepalived 搭建高可用負載均衡
.rpm pass 創建 綁定 提供服務 網卡 stat -i welcom 一、系統要求:[root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 二、IP 地址規
配置MySQL高可用叢集MHA
配置MySQL高可用叢集+++++++++++++++++++主機角色 :客戶端 client50資料庫伺服器 mysql51 到 mysql55管理主機 mgm56VIP地址 192.168.4.100拓撲結構: client50 | mysql51主 |
HAProxy+Keepalived 高可用負載均衡
link ipad 配置 make type 負載均衡 pro ext figure 轉自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy實現高可用負載均衡 Master 192.168.0