keepalived+mysql主主實現高可用
主主配置就是互為主從
keepalived下載網址:http://www.keepalived.org/
環境
準備應用
keepalived-2.0.2.tar.gz
openssl-devel-1.0.2k-12.el7.x86_64.rpm
安裝
rpm -ivh openssl-devel-1.0.2k-12.el7.x86_64.rpm tar -zxvf keepalived-2.0.2.tar.gz ./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/
mkdir -p /etc/keepalived
cd /etc/keepalived
配置主keepalived
vim keepalived.conf
global_defs { notification_email { } } vrrp_instance VI_1 { state MASTER #備服務器上改為 BACKUP interface ens33 #網卡 virtual_router_id 11 priority 100 #備用服務器上改為99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.11 #VIP } } virtual_server 192.168.10.132 3306 { delay_loop 6 #每隔6秒檢查一次real_server狀態 lb_algo rr #負載調度算法rr|wrr|lc|wlc|lblc|sh|dh lb_kind NAT #負載均衡轉發規則NAT|DR|RUN nat_mask 255.255.255.0 persistence_timeout 50 #回話保持時間 protocol TCP real_server 192.168.10.132 3306 { weight 2 notify_down "/etc/keepalived/mysql.sh" #新建這個mysql.sh文件,輸入 pkill keepalived TCP_CHECK { connect_timeout 3 connect_port 3306 } } }
備keepalived配置
vim keepalived.conf
global_defs { notification_email { } } vrrp_instance VI_1 { state BACKUO #主服務器上改為 master interface ens33 #網卡 virtual_router_id 11 priority 99 #主服務器設置比備服務器數大 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.11 #VIP } } virtual_server 192.168.10.200 3306 { delay_loop 6 #每隔6秒檢查一次real_server狀態 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 persistence_timeout 50 #回話保持時間 protocol TCP real_server 192.168.10.200 3306 { weight 1 notify_down "/etc/keepalived/mysql.sh" #新建這個mysql.sh文件,輸入 pkill keepalived TCP_CHECK { connect_timeout 3 connect_port 3306 } } }
創建mysql檢測腳本
vim mysql.sh
#!/bin/bash
pkill keepalived #檢測到mysql關閉後自動關閉keepalived
以上keepalived+mysql配置完成。可以通過關閉主的mysql查看VIP是否漂移到備,關閉主的keepalived查看VIP是否漂移到備,關閉主VIP機器是否漂移到備。
關於keepalived算法說明
rr 輪詢算法,它將請求依次分配給不同的rs節點,也就是RS節點中均攤分配。這種算法簡單,但只適合於RS節點處理性能差不多的情況
wrr 加權輪訓調度,它將依據不同RS的權值分配任務。權值較高的RS將優先獲得任務,並且分配到的連接數將比權值低的RS更多。相同權值的RS得到相同數目的連接數。
Wlc 加權最小連接數調度,假設各臺RS的全職依次為Wi,當前tcp連接數依次為Ti,依次去Ti/Wi為最小的RS作為下一個分配的RS
Dh 目的地址哈希調度(destination hashing)以目的地址為關鍵字查找一個靜態hash表來獲得需要的RS
SH 源地址哈希調度(source hashing)以源地址為關鍵字查找一個靜態hash表來獲得需要的RS
Lc 最小連接數調度(least-connection),IPVS表存儲了所有活動的連接。LB會比較將連接請求發送到當前連接最少的RS.
Lblc 基於地址的最小連接數調度(locality-based least-connection):將來自同一個目的地址的請求分配給同一臺RS,此時這臺服務器是尚未滿負荷的。否則就將這個請求分配給連接數最小的RS,並以它作為下一次分配的首先考慮。
LVS調度算法的生產環境選型:
1、一般的網絡服務,如http,mail,mysql等常用的LVS調度算法為:
a.基本輪詢調度rr
b.加權最小連接調度wlc
c.加權輪詢調度wrc
2、基於局部性的最小連接lblc和帶復制的給予局部性最小連接lblcr主要適用於web cache和DB cache
3、源地址散列調度SH和目標地址散列調度DH可以結合使用在防火墻集群中,可以保證整個系統的出入口唯一。
實際適用中這些算法的適用範圍很多,工作中最好參考內核中的連接調度算法的實現原理,然後根據具體的業務需求合理的選型。
負載均衡轉發工作模式
1、DR模式:
通過改寫請求報文的目標MAC地址,將請求發送給真實服務器,而真實服務器將相應後的處理結果直接返還給客戶端用戶。極大地提高集群的伸縮性,但LB與RS必須在同一局域網環境。
2、NAT模式:
通過網絡地址轉換,LB重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實服務器,真實服務器的響應報文處理之後,返回時必須通過LB,經過LB時報文的源地址被重寫,再返回給客戶。
3、隧道模式:
LB把請求的報文通過IP隧道轉發至真實服務器,而真實服務器將響應處理後直接返回給客戶端用戶。
4、FULLNAT模式:
數據包進入時,除了做DNAT,還做SNAT,從而實現LVS-RealServer間可以跨vlan通訊,RealServer只需要連接到內網。
keepalived+mysql主主實現高可用