1. 程式人生 > >MySQL 主主複製 + LVS + Keepalived 實現 MySQL 高可用性

MySQL 主主複製 + LVS + Keepalived 實現 MySQL 高可用性

MySQL複製能夠保證資料的冗餘的同時可以做讀寫分離來分擔系統壓力,如果是主主複製還可以很好的避免主節點的單點故障。但是MySQL主主複製存在一些問題無法滿足我們的實際需要:未提供統一訪問入口來實現負載均衡,如果其中master宕掉的話需要手動切換到另外一個master,而不能自動進行切換。

這篇文章下面要介紹如何通過LVS+Keepalived的方式來是實現MySQL的高可用性,同時解決以上問題。

Keepalived和LVS介紹

Keepalived是一個基於VRRP(虛擬路由冗餘協議)可用來實現服務高可用性的軟體方案,避免出現單點故障。Keepalived一般用來實現輕量級高可用性,且不需要共享儲存,一般用於兩個節點之間,常見有LVS+Keepalived、Nginx+Keepalived組合。

LVS(Linux Virtual Server)是一個高可用性虛擬的伺服器集群系統。本專案在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。
LVS主要用於多伺服器的負載均衡,作用於網路層。LVS構建的伺服器集群系統中,前端的負載均衡層被稱為Director Server;後端提供服務的伺服器組層被稱為Real Server。通過下圖可以大致瞭解LVS的基礎架構。

LVS有三種工作模式,分別是DR(Direct Routing 直接路由)、TUN(Tunneling IP隧道)、NAT(Network Address Translation 網路地址轉換)。其中TUN模式能夠支援更多的Real Server,但需要所有伺服器支援IP隧道協議;DR也可以支援相當的Real Server,但需要保證Director Server虛擬網絡卡與物理網絡卡在同一網段;NAT擴充套件性有限,無法支援更多的Real Server,因為所有的請求包和應答包都需要Director Server進行解析再生,影響效率。 同時,LVS負載均衡有10中排程演算法,分別是rr、wrr、lc、wlc、lblc、lblcr、dh、sh、sed、nq

詳細的LVS說明請參見 傳送門

本文中將利用LVS實現MySQL的讀寫負載均衡,Keepalived避免節點出現單點故障。

LVS+Keepalived配置

環境準備

LVS1:192.168.1.2

LVS2:192.168.1.11

MySQL Server1:192.168.1.5

MySQL Server2:192.168.1.6

VIP:192.168.1.100

OS: CentOS 6.4

Keepalive安裝

需要安裝以下軟體包

1 # yum install -y kernel-devel openssl openssl-devel

解壓keepalived到/usr/local/並進入目錄執行配置編譯

123456789101112131415161718 # ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64/Keepalived configuration------------------------Keepalived version:1.2.13Compiler:gccCompiler flags:-g-O2Extra Lib:-lssl-lcrypto-lcrypt UseIPVS Framework:YesIPVS sync daemon support:YesIPVS uselibnl:Nofwmark socket support:YesUseVRRP Framework:YesUseVRRP VMAC:YesSNMP support:NoSHA1 support:NoUseDebug flags:No# make

預設情況下keepalived啟動時會去/etc/keepalived目錄下找配置檔案,將需要的配置檔案拷貝到指定位置

123456 # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/# chkconfig mysqld on# chkconfig keepalived on

LVS安裝

需要安裝以下軟體包

1 # yum install -y libnl* popt*

檢視是否載入lvs模組

1 # modprobe -l |grep ipvs

解壓安裝

123 # ln -s /usr/src/kernels/2.6.32-431.5.1.el6.x86_64/ /usr/src/linux# tar -zxvf ipvsadm-1.26.tar.gz# make

LVS安裝完成,檢視當前LVS叢集

1234 # ipvsadm -L -nIP Virtual Server version1.2.1(size=4096)Prot LocalAddress:Port Scheduler Flags->RemoteAddress:Port           Forward Weight ActiveConn InActConn

LVS+Keepalived配置

搭建MySQL主主複製

配置Keepalived

下面是LVS1節點(Keepalived主節點)上的Keepalived配置,LVS2類似

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 # vim /etc/keepalived/keepalived.conf    !ConfigurationFileforkeepalivedglobal_defs{router_id LVS1}vrrp_instanceVI_1{state MASTER#指定instance初始狀態,實際根據優先順序決定.backup節點不一樣interfaceeth0#虛擬IP所在網virtual_router_id51#VRID,相同VRID為一個組,決定多播MAC地址priority100#優先順序,另一臺改為90.backup節點不一樣advert_int1#檢查間隔authentication{auth_type PASS#認證方式,可以是pass或haauth_pass1111#認證密碼}virtual_ipaddress{192.168.1.100#VIP}}virtual_server192.168.1.1003306{delay_loop6#服務輪詢的時間間隔lb_algo wrr#加權輪詢排程,LVS排程演算法 rr|wrr|lc|wlc|lblc|sh|shlb_kind DR#LVS叢集模式 NAT|DR|TUN,其中DR模式要求負載均衡器網絡卡必須有一塊與物理網絡卡在同一個網段#nat_mask 255.255.255.0persistence_timeout50#會話保持時間protocol TCP#健康檢查協議## Real Server設定,3306就是MySQL連線埠real_server192.168.1.53306{weight3##權重TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port3306}}real_server192.168.1.63306{weight3TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port3306}}}

配置LVS

編寫LVS啟動指令碼/etc/init.d/realserver

123456789101112131415161718192021222324252627282930313233343536373839404142 #!/bin/shVIP=192.168.1.100./etc/rc.d/init.d/functionscase"$1"in# 禁用本地的ARP請求、繫結本地迴環地址start)/sbin/ifconfig lo down/sbin/ifconfig lo upecho"1">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/lo/arp_announceecho"1">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/all/arp_announce/sbin/sysctl-p>/dev/null2>&1/sbin/ifconfig lo:0$VIP netmask255.255.255.255up#在迴環地址上繫結VIP,設定掩碼,與Direct Server(自身)上的IP保持通訊/sbin/route add-host$VIP dev lo:0echo"LVS-DR real server starts successfully.n";;stop)/sbin/ifconfig lo:0down/sbin/route del$VIP>/dev/null2>&1echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/lo/arp_announceecho"1">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/all/arp_announceecho"LVS-DR real server stopped.n";;status)isLoOn=`/sbin/ifconfig lo:0|grep"$VIP"`isRoOn=`/bin/netstat-rn|grep"$VIP"`if["$isLoON"==""-a"$isRoOn"==""];thenecho"LVS-DR real server has run yet."elseecho"LVS-DR real server is running."fiexit3;;*)echo"Usage: $0 {start|stop|status}"exit1esacexit0

將lvs指令碼加入開機自啟動

12 # chmod +x /etc/init.d/realserver# echo "/etc/init.d/realserver" >> /etc/rc.d/rc.local

分別啟動LVS和keepalived

12 # service realserver start# service keepalived start

注意此時網絡卡的變化,可以看到虛擬網絡卡已經分配到了realserver上。

此時檢視LVS叢集狀態,可以看到叢集下有兩個Real Server,排程演算法,權重等資訊。ActiveConn代表當前Real Server的活躍連線數

1234567 # ipvsadm -lnIP Virtual Server version1.2.1(size=4096)Prot LocalAddress:Port Scheduler Flags->RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP192.168.1.100:3306wrr persistent50

相關推薦

MySQL 複製 + LVS + Keepalived 實現 MySQL 可用

MySQL複製能夠保證資料的冗餘的同時可以做讀寫分離來分擔系統壓力,如果是主主複製還可以很好的避免主節點的單點故障。但是MySQL主主複製存在一些問題無法滿足我們的實際需要:未提供統一訪問入口來實現負載均衡,如果其中master宕掉的話需要手動切換到另外一個mast

MySQL復制+LVS+Keepalived實現MySQL可用

reports with server 好的 進入 ring BE failed remote MySQL復制能夠保證數據的冗余的同時可以做讀寫分離來分擔系統壓力,如果是主主復制還可以很好的避免主節點的單點故障。但是MySQL主主復制存在一些問題無法滿足我們的實際需要:未提

inotify+rsync+mysql復制+keepalived實現zabbix可用

lease 包含 ati weight ebp nag fig 數據信息 replicat 思路:主備機通過inotify+rsync實現文件同步,通過mysql主主復制實現數據同步,同一時刻只有一臺服務器能對外提供zabbix服務,web端登陸虛ip訪問,被監控主機通過配

LVS+Keepalived實現MySQL從庫讀操作負載均衡配置

password lob new 信息 如果 ldoc 負載均衡。 path ignore 轉載於osyunwei 說明: 操作系統:CentOS 5.X 64位 MySQL主服務器:192.168.21.126 MySQL從服務器:192.168.21.127,192.1

Memcached 復制+ Keepalived 實現 Memcached 可用架構集群

作用 代理 應用 進行 rep 高可用性 val gen backup Memcached +keepalived 高可用集群 Memcached 主主復制這種架構,在程序連接時不知道應該連接哪個主服務器,所以需要在前端增加 VIP 地址,實現高可用架構。這裏用 Keep

keepalived實現nginx可用,一一備

ddr cti 文件重命名 實現 usr time deb 安裝 fall keepalived實現nginx高可用(HA) 安裝直接yum安裝就可以,版本可能比官網落後,但是夠用了, yum -y install keepalived 編輯配置文件,默認路徑 /et

LVS+Keepalived+MysqlCluster搭建可用Mysql系統(實測可行)

LVS+Keepalived+MysqlCluster搭建高可用的Mysql系統(實測可行) 環境 CentOS7.0 -mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz keepalived-1.4.2.tar

基於ZooKeeper實現HA可用以及自動備切換

預設情況下,standalone cluster manager對於worker節點的失敗是具有容錯性的(迄今為止,Spark自身而言對於丟失部分計算工作是有容錯性的,它會將丟失的計算工作遷移到其他worker節點上執行)。然而,排程器是依託於master程序來

Nginx+Keepalived實現站點可用

不存在 個人 全局配置 狀態 操作 介紹 轉發 所在 端口 公司內部 OA 系統要做線上高可用,避免單點故障,所以計劃使用2臺虛擬機通過 Keepalived 工具來實現 nginx 的高可用(High Avaiability),達到一臺nginx入口服務器宕機,另一臺備機

keepalived實現服務可用

keepalived高可用環境說明 系統: centos 7.4 軟件: keepalived: 1.3.5 nginx: 1.12.2 tcpdump工具 主機:192.168.9.222 192.168.9.223 vip地址: 192.168.9.151 kee

Nginx+Keepalived實現Nginx可用

itl one 瀏覽器 p地址 存在 interval img title 訪問 在架構設計中,可以利用NGINX的反向代理和負載均衡實現後端應用的高可用性,同時我們還需要考慮Nginx的單點故障。真正做到架構高可用性。主要考慮以下幾點: 1、Nginx服務因為意外

linux中keepalived實現nginx可用配置

linux中keepalived實現nginx高可用配置 安裝keepalived 執行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd /usr/src/keepalived-2.0.8 sudo apt-get install

Nginx + Keepalived 實現服務可用

這一篇,主要介紹下 Nginx + KeepAlived 如何配置 HA(高可用性”(High Availability)通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性)。 在專案部署過程中,代理伺服器 Nginx 要做到線上高可用,避免出現單點故障,

LVS+Keepalived搭建MyCAT可用負載均衡叢集

LVS+Keepalived 介紹 LVS LVS是Linux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統。本專案在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR),十種

LVS+Keepalived+Squid+Nginx可用負載均衡快取配置

隨著網際網路IT行業的發展,越來越多的企業開始使用開源軟體搭建自己的web架構,主流的LVS也得到了廣泛的應用,在保證高可用的同時,使用者對網站的體驗速度也有了很高的要求,這時候需要我們在我們的架構既要滿足高併發同時還要求高速度。 今天我們來搭建主流架構Lvs+Keepalived+Sq

keepalived實現mycat可用問題排查;道路坎坷,布滿荊棘,定讓你大吃一驚!

查詢信息 情況 sbin 使用 str 說明 pen at命令 搶占 前言   開心一刻     醫院裏,一母親帶著小女孩打針。小女孩:“媽媽我不想打針,疼!”媽媽:“寶貝兒聽話,這裏這麽多護士阿姨,咱們找個打針不疼的。”

Nginx+Tomcat+lvs+Keepalived搭建的可用架構

上圖所示是用Nginx做前端伺服器,Tomcat做後端伺服器搭建的高可用架構,其中Memcache用來快取session,後端伺服器都從memcache中獲取session,避免了session不一致的問題。但是這個架構存在明顯的兩個問題: 一、如果前端的

利用redis-sentinel+keepalived實現redis可用

目標、需求: 為上層應用提供高可靠、低延遲、低(無限接近0)資料損失的Redis快取服務 方案概述: 採用同一網路內的三臺主機(可以是物理主機、虛擬機器或docker容器),要求三臺主機之間都能相互訪問,每一臺主機上都安裝redis-server、redis-sen

keepalived實現nginx可用

alived default req mib 5.1 nop router his rep keepalived實現nginx高可用 1、環境說明 IP 服務 作用 192.168.1.101 nginx + keepalived master 192.1

Nginx + Keepalived實現應用可用負載均衡功能

監控nginx .tar.gz provides listening 一個 list nginx負載均衡 服務器ip load 說明:此處僅介紹 Keepalived 實現nginx負載均衡器的高可用,關於nginx介紹和負載均衡實現可查看我的另兩篇博文 Nginx負載均衡