keepalived+lvs+mysql cluster架構實現負載均衡
一、環境
用途 | ip | os | memory |
排程器 | 172.16.48.204 | CentOS 5.5 64bit | 32G |
sql節點1 | 172.16.48.206 | CentOS 5.5 64bit | 32G |
sql節點2 | 172.16.48.207 | CentOS 5.5 64bit | 32G |
sql節點3 | 172.16.48.208 | CentOS 5.5 64bit | 32G |
sql節點4 | 172.16.48.211 | CentOS 5.5 64bit | 32G |
VIP設定為:172.100.100.251 (注:不能和排程器、sql節點在一個網段上)
在排程器172.16.48.204電腦上,用route add default dev eth1
命令新增路由,使得
二、架構圖
這裡排程器只用了一個節點,沒有設定Backup
三、軟體下載
lvs: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
keepalived: http://www.keepalived.org/download.html
四、軟體安裝
編輯lvs的時候需要作業系統的核心,不然會報錯
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
解決方法:yum install openssl*
可能 還會報錯:libipvs.c:253: 錯誤:提領指向不完全型別的指標
解決方法:yum -y install kernel-devel 可參考:http://692344.blog.51cto.com/blog/682344/804278
如果還是不行,可能是由於lvs keepalived的版本過高
1.在排程器172.16.48.204上安裝lvs
ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install
2.在排程器172.16.48.204上安裝keepalived
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
3.配置keepalived.conf
vi /etc/keepalived/keepalived.conf
新增如下內容:
- global_defs {
- router_id HaMySQL_1
- }
- vrrp_sync_group VGM {
- group {
- VI_MYSQL
- }
- }
- vrrp_instance VI_MYSQL {
- state MASTER
- interface eth1
- virtual_router_id 100
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 172.100.100.251/24 etho label eth0:1
- }
- }
- virtual_server 172.100.100.251 3306 {
- delay_loop 6
- lb_algo rr
- lb_kind DR
- # nat_mask 255.255.0.0
- #persistence_timeout 50
- protocol TCP
- real_server 172.16.48.206 3306 {
- weight 3
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- real_server 172.16.48.207 3306 {
- weight 3
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- real_server 172.16.48.208 3306 {
- weight 3
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- real_server 172.16.48.211 3306 {
- weight 3
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- }
4.sql服務節點的配置
vi /etc/rc.d/init.d/realserver.sh 新增如下配置:
- #!/bin/bash
- # description: Config realserver lo and apply noarp
- SNS_VIP=172.100.100.251
- /etc/rc.d/init.d/functions
- case "$1" in
- start)
- ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
- /sbin/route add -host $SNS_VIP dev lo:0
- echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
- sysctl -p >/dev/null 2>&1
- echo "RealServer Start OK"
- ;;
- stop)
- ifconfig lo:0 down
- route del $SNS_VIP >/dev/null 2>&1
- echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
- echo "RealServer Stoped"
- ;;
- *)
- echo "Usage: $0 {start|stop}"
- exit 1
- esac
- exit 0
新增加可執行的許可權
chmod +x /etc/rc.d/init.d/realserver.sh
注:四臺sql節點都要進行此步操作
五、啟動LVS節點(mysql cluster中的sql節點)
/etc/rc.d/init.d/realserver.sh start
六、啟動排程器(keepalived的伺服器端啟動)
/etc/rc.d/init.d/keepalived start
啟動後可以用命令 tail -f /var/log/messages 進行檢視
若看到如下提示,則表示配置成功。
- [[email protected] mysql-cluster]# tail -f /var/log/messages
- May 29 17:21:01 sg204 Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
- May 29 17:21:01 sg204 Keepalived_vrrp: Configuration is using : 63921 Bytes
- May 29 17:21:01 sg204 Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
- May 29 17:21:01 sg204 Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
- May 29 17:21:01 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.206:3306]
- May 29 17:21:01 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.207:3306]
- May 29 17:21:01 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.208:3306]
- May 29 17:21:01 sg204 Keepalived_healthcheckers: Activating healtchecker for service [172.16.48.211:3306]
- May 29 17:21:01 sg204 Keepalived_vrrp: VRRP sockpool: [ifindex(3), proto(112), fd(10,11)]
- May 29 17:21:02 sg204 Keepalived_vrrp: VRRP_Instance(VI_MYSQL) Transition to MASTER STATE
- May 29 17:21:03 sg204 Keepalived_vrrp: VRRP_Instance(VI_MYSQL) Entering MASTER STATE
- May 29 17:21:03 sg204 Keepalived_vrrp: VRRP_Instance(VI_MYSQL) setting protocol VIPs.
- May 29 17:21:03 sg204 Keepalived_healthcheckers: Netlink reflector reports IP 172.100.100.251 added
- May 29 17:21:03 sg204 Keepalived_vrrp: VRRP_Instance(VI_MYSQL) Sending gratuitous ARPs on eth1 for 172.100.100.251
- May 29 17:21:03 sg204 Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to MASTER state
- May 29 17:21:03 sg204 avahi-daemon[4768]: Registering new address record for 172.100.100.251 on eth1.
- May 29 17:21:03 sg204 Keepalived_vrrp: Netlink reflector reports IP 172.100.100.251 added
- May 29 17:21:08 sg204 Keepalived_vrrp: VRRP_Instance(VI_MYSQL) Sending gratuitous ARPs on eth1 for 172.100.100.251
在排程器上用ipvsadm命令檢視,可以看到如下資訊
- [[email protected] mysql-cluster]# ipvsadm
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 172.100.100.251:mysql rr
- -> 172.16.48.211:mysql Route 3 0 0
- -> 172.16.48.208:mysql Route 3 0 0
- -> 172.16.48.207:mysql Route 3 0 0
- -> 172.16.48.206:mysql Route 3 0 0
七、遠端應用通過vip訪問mysql資料庫
要遠端應用程式訪問mysql資料庫,還需要一個遠端訪問的賬號和密碼,在mysql剛建立後,mysql是沒有遠端訪問賬號的,
在sql節點上增加遠端認證客戶:
grant 許可權1,許可權2,…許可權n on 資料庫名稱.表名稱 to 使用者名稱@使用者地址 identified by ‘連線口令’
- Mysql>:select user,host,password from mysql.user;
- Mysql>: grant all privileges on *.* to [email protected]"%" identified by '111111' with grant option;
八、測試
在其他 節點上(排程器和sql節點之外的電腦),ping 172.100.100.251發現可以ping通
這裡選用的是172.16.48.201節點:
- [[email protected] ~]# ping 172.100.100.251
- PING 172.100.100.251 (172.100.100.251) 56(84) bytes of data.
- 64 bytes from 172.100.100.251: icmp_seq=1 ttl=64 time=0.093 ms
- 64 bytes from 172.100.100.251: icmp_seq=2 ttl=64 time=0.164 ms
- 64 bytes from 172.100.100.251: icmp_seq=3 ttl=64 time=0.162 ms
在172.16.48.201上安裝mysql客戶端後,用命令 mysql -u admin -p -h 172.100.100.251測試發現可以 連線資料庫,
將172.16.48.208上的mysql服務停掉後,這時在高度器上tail -f var/log/messages會看到排程器自動將無效sql節點移除lvs了
- May 30 11:04:11 sg204 Keepalived_healthcheckers: TCP connection to [172.16.48.208:3306] failed !!!
- May 30 11:04:11 sg204 Keepalived_healthcheckers: Removing service [172.16.48.208:3306] from VS [172.100.100.251:3306]
再將172.16.48.208上的mysql服務啟動起來,這時
- May 30 11:06:53 sg204 Keepalived_healthcheckers: TCP connection to [172.16.48.208:3306] success.
- May 30 11:06:53 sg204 Keepalived_healthcheckers: Adding service [172.16.48.208:3306] to VS [172.100.100.251:3306]
哈哈!成功搞定
相關推薦
keepalived+lvs+mysql cluster架構實現負載均衡
一、環境 用途 ip os memory 排程器 172.16.48.204 CentOS 5.5 64bit 32G sql節點1 172.16.48.206 CentOS 5.5 64bit 32G sql節點2 172.16.48.207 CentOS 5.5 64bit 32G sql節點3 1
Linux學習總結(五十四)keepalived+lvs 雙機熱備負載均衡架構
DR LVS keepalived+lvs 一 LVS IP tunnel 模式介紹 IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技術亦稱為IP封裝技術(IP encapsulatio
Docker compose(多容器架構實現負載均衡)
一、基本知識 Docker Compose 將所管理的容器分為三層,工程(project),服務(service)以及容器(contaienr)。Docker Compose 執行的目錄下的所有檔案(docker-compose.yml, extends 檔案或環境變數檔案等)組成一
MySQL Cluster SQL節點負載均衡、讀寫分離驗證
龍年完成的Amoeba環境初步搭建工作,蛇年開始進行讀寫分離和負載均衡的驗證工作。先祝大家蛇年一切順利。上回的工作我們只是完成Amoeba框架的引入,但是並不滿足讀寫分離場景的要求,因為最基本的,SQL節點只有一個。 所以,我們首先需要新增
LVS-DR簡單模型實現負載均衡
LVS-DR模型:基於直接路由的web服務 基本的原理:Director和RealServer必須在物理上有一個網絡卡通過區域網相連(高速交換機或者HUB),Director只負責排程請求,響應報文則由RealServer直接返回給Client。使用者的IP為
lvs+keepalived實現負載均衡
keepalive 裝載 announce log loopback -s scheduler sad apr LVS簡介: lvs是負載均衡較常用的軟件之一,lvs官方提供了一個命名的約定: vip:虛擬ip地址,縮寫是vip,vip是負載均衡器對外提供服務的ip。 ri
LVS(DR) + Keepalived 實現負載均衡
lvs keepalived apacheLVS(DR) + Keepalived 實現負載均衡高可用一、為什麽要使 用負載均衡技術?1、 系統高可用性2、 系統可擴展性3、 負載均衡能力 LVS+keepalived能很好的實現以上的要求,LVS提 供負載均衡,keepalived提供健康檢查,
Keepalived + LVS 實現負載均衡
chmod 成功 keepalive 健康檢查 ipaddr 高可用 得到 sse cap 一、Keepalived 與 LVS 簡單工作原理了解 1、Keepalived 管理LVS負載均衡軟件,Keepalived 可以通過讀取自身的配置文件,實現通過更底層的接口直接管
Keepalived結合LVS-DR實現負載均衡高可用集群
table 開啟 strong 部署 toc ifconf cal 指向 protocol 簡介 Keepalived期初是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能—判斷LVS負載調度器、節點服務器的可用性,及時隔離並替換新的服務器,當故障
lvs負載均衡的四種模式原理,LVS之DR模型,LVS+keeaplived實現負載均衡,keepalived實現高可用
一,LVS的簡介: Linux virtual system,是由目前阿里著名工程師章文嵩開發的一寬開源的軟體。LVS工作在一臺server上提供Directory(負載均衡器)的功能,它本身並不提供任何服務,只是把特定的請求轉發給對應的realserver(
LVS+keepalived 實現負載均衡
一、資源規劃 在開始搭建之前,我們首先需要準備和規劃好搭建所需的資源。因為效能等方面的考慮,我們使用當前比較流行的DR模式。 搭建前我們需要了解,搭建環境的機器必須在同一網段內,此次環境搭建需要1個VIP和四臺機器(我這裡使用四臺VM) 具體清單如下: 伺服
Nginx+keepalived做雙機熱備,實現負載均衡(主主模式)
nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali
Haproxy+keepalived實現負載均衡
keepalived haproxy Haproxy簡介: Haproxy是一個開源的高性能的反向代理或者說是負載均衡服務軟件之一,它支持雙機熱備、虛擬主機、基於TCP和HTTP應用代理等功能。其配置簡單,而且擁有很好的對服務器節點的健康檢查功能(相當於keepalived健康檢查)。
haproxy+keepalived實現負載均衡及高可用
keepalived+haproxy HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高性能性、負載均衡,以及基於TCP和HTTP的應用程序代理。相較與 Nginx,HAProxy 更專註與反向代理,因此它可以支持更多的選項,更精細的控制,更多的健康狀態檢測機制和負載均衡算法。 H
Keepalived + Haproxy實現負載均衡高可用
liunx haproxy 高可用基於LVS實現Keepalived的高可用見:http://amelie.blog.51cto.com/12850951/1979636負載均衡為將用戶並發請求轉發到後臺若幹服務器,以分流方式均衡負載。均衡負載借用的軟件,我們這裏是Haproxy。而負責轉發的服務器,我們稱之
LVS實現負載均衡
lvs實現負載均衡一、 LVS簡介LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器, 是一個由章文嵩博士發起的自由軟件項目,它的官方站點是www.linuxvirtualserver.org。現在LVS已經是 Linux標準內核的一部分,在Linux2.4內核以前,使用LVS
項目實戰02:LVS 實現負載均衡
請求報文 directory shared _for ipvsadm 路由轉發 更多 1-1 targe 目錄 實現基於LVS負載均衡集群的電商網站架構 實戰一:LVS的NAT模式實現負載均衡 實戰二:LVS的DR 模式實現負載均衡 實戰三:實現80、443
Keepalived+Nginx實現負載均衡高可用
技術 狀態 實現負載均衡 一定的 方式 mark 提供服務 priority usr 一、負載均衡高可用 Nginx作為負載均衡器,所有請求都到了Nginx,可見Nginx處於非常重點的位置,如果Nginx服務器宕機後端web服務將無法提供服務,影響嚴重。
使用LVS實現負載均衡原理及安裝配置詳解
配置 png 負載均衡 iptables .cn 詳解 文章 配置詳解 logs LVS是一個開源軟件,由章文嵩博士於1998年5月創立,可以實現Linux平臺下的簡單負載均衡。LVS是Linux Virtual Server的簡寫,是一個虛擬的服務器集群系統。LVS是基於
LVS-NAT與LVS-DR類型的負載均衡實現原理
限制 ann 所有 來講 默認 51cto 沖突 lvs-dr 配置 lvs-dr類型工作原理:①:client端向目標IP(VIP)發送請求,經由路由器和交換機設備和後,此時的請求數據包頭文件的目標MAC值為調度器的MAC,源MAC值為client的MAC,目標IP為VI