LVS+Keepalived實現負載均衡

keepalived工作原理

keepalived是基于VRRP協議實現的保證集群高可用的一個服務軟件,主要功能是實現后端真實服務器的故障隔離和負載均衡器間的失敗切換,防止單點故障。

VRRP協議全稱:虛擬路由冗余協議(Virtual Route Redundancy Protocol)。

keepalived安裝

# yum install keepalived -y

 

keepalived配置文檔

/etc/keepalived/keepalived.conf

查看具體配置參數說明

# man keepalived.conf

 

全局配置段的常用參數:

global_defs {
? ? ? ?…
}
router_id LVS_DEVEL:物理節點的標識符;建議使用主機名;
vrrp_mcast_group4:IPV4多播地址,默認224.0.0.18;

VRRP配置段的常用參數:

vrrp_instance NAME {
}
state MASTER|BACKUP:在當前VRRP實例中此節點的初始狀態;
interface ? IFACE_NAME:vrrp用于綁定vip的接口;
virtual_router_id ?#:當前VRRP實例的VRID,可用范圍為0-255,默認為51;
priority #:當前節點的優先級,可用范圍0-255;
advert_int 1:通告時間間隔;
authentication { ? ? # Authentication block 認證機制
? ? ? ? ? auth_type PASS
? ? ? ? ? auth_pass 1234
}
virtual_ipaddress {
? ? ? ? ? ? ? ? ? ? <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
}
track_interface{#定義要監控的接口
? ? ? ? ? ? ? ? ? eth0
nopreempt:工作于非搶占模式(默認為搶占模式)
notify_master ?<STRING>|<QUOTED-STRING> ? ? #定義通知腳本
notify_backup ?<STRING>|<QUOTED-STRING>
notify_fault ?<STRING>|<QUOTED-STRING>
notify ?<STRING>|<QUOTED-STRING>

ipvs配置段的常用參數:

定義虛擬服務器:
virutal_server ?vip ?port |virtual_server fwmark int ?{
}
delay_loop ?<INT> ? ? 定義健康檢查時間間隔;
lb_algo ? rr|wrr|lc|wlc|lblc|sh|dh ? ?定義負載均衡調度方法;
lb_kind ?NAT|DR|TUN ? 定義集群的類型
persistence_timeout ?<INT> ? 持久連接時長;
protocol TCP ?服務協議;
sorry_server ?<IPADDR> ?<PORT> ?所有RS均故障時,提供say sorry的服務器;
定義后端真實服務器:
real_server <IPADDR> <PORT> ?{
}
weight <INT> ? 權重;
notify_up ?<STRING>|<QUOTED-STRING> 節點上線時調用的通知腳本;
notify_down ?<STRING>|<QUOTED-STRING> ?節點離線時調用的通知腳本;
HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK ? ?支持的健康狀態檢測方式;

實例:LVS+Keepalived實現負載均衡

實驗結構縱覽:

繪圖1

1、基于VMware Workstation搭建一個四臺CentOS 7系統所構成的服務器集群,其中兩臺負載均衡服務器(一主,一備),另外兩臺作為真實的Web服務器(向外部提供http服務)。

2、本次實驗基于DR負載均衡模式,VIP(Virtual IP)為192.168.71.30。其中,負載均衡主機為192.168.71.41,備機為192.168.71.42。Web服務器A為192.168.80.102,Web服務器B為192.168.80.103。

HA Cluster的配置前提:

1、各節點時間要同步;
# yum install ntpdate -y
# crontab -l
*/5 * * * * ntpdate cn.ntp.org.cn &> /dev/null
2、確保iptables及selinux不會成為障礙;
# vi /etc/sysconfig/selinux
SELINUX=disabled
3、(keepalived可選)各節點之間可通過主機名互相通信;節點的名稱設定與hosts文件中解析的主機名都要保持一致;uname -n 獲得的主機,與解析的主機名要相同;
# hostnamectl set-hostname ha1.lewis.com
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.71.41 ha1.lewis.com ha1
192.168.71.42 ha2.lewis.com ha2
4、(keepalived可選)各節點之間基于密鑰認證的方式通過ssh互相通信;
# ssh-keygen -t rsa -P ”
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.71.42

?

配置各RS:

請自行關閉selinux和firewalld,安裝httpd,開啟httpd服務,并提供index.html頁面(此處為了區別rs,因此提供不一樣的頁面)
rs1:即192.168.71.43
# yum install httpd -y
# echo “rs1 192.168.71.43” > /var/www/html/index.html
# systemctl start httpd
# systemctl enable httpd
rs2:即192.168.71.44
# yum install httpd -y
# echo “rs2 192.168.71.44” > /var/www/html/index.html
# systemctl start httpd
# systemctl enable httpd
編輯rs腳本setrs.sh如下:
# vim setrs.sh
#!/bin/bash
vip=”192.168.71.30″
case “$1” in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ip addr add ${vip}/32 dev lo:0
ip route add ${vip}/32 dev lo:0
echo “realserver start ok”
;;

stop)
ip route del $vip &> /dev/null
ip addr del ${vip}/32 dev lo:0 &> /dev/null
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo “realserver stoped”
;;

*)
echo “Usage: $0 {start | stop}”
exit 1
esac

#chmod +x setrs.sh
# bash setrs.sh start
?
配置主負載均衡服務器(即192.168.71.41)
1、安裝keepalived
# yum install epel-release -y
# yum install ?keepalived -y
2、配置keepalived的配置文件
# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id ha1.lewis.com
vrrp_mcast_group4 224.0.71.18
}

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 963852741
}
virtual_ipaddress {
192.168.71.30
}
}

virtual_server 192.168.71.30 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80

real_server 192.168.71.43 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.71.44 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

開啟keepalived服務

# systemctl start keepalived

# systemctl enable keepalived

 

配置備負載均衡服務器(即192.168.71.42)

復制主節點的keepalived.conf配置修改

state BACKUP
priority 99

開啟keepalived服務

# systemctl start keepalived

# systemctl enable keepalived

 

請自行測試效果(主備切換,RS當機自動移除ipvs規則)

 

另附:keepalived高可用具體服務的實例

主要依賴于vrrp_script和track_sript;

vrrp_script:自定義一個資源監控腳本;vrrp實例能根據腳本狀態返回值來
公共定義,可被多個實例調用,因此定義在vrrp實例之外;
track_script:調用vrrp_script定義的腳本去監控資源;
定義在實例之內,調用事先定義好的vrrp_script;
腳本示例:通過檢測httpd服務是否正常的返回值來減少weight,達到ip漂移。
vrrp_script chk_httpd {
? ? ? ?script “killall -0 httpd”
? ? ? ?interval 2
? ? ? ?weight -5
}
track_script {
? ? ? ? chk_httpd
? ? }

 

示例:

# vim /etc/keepalived/keepalived.conf

notification_email {
root@localhost
}
notification_email_from kaadmin@lewis.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ha1
vrrp_mcast_group4 224.0.120.18
}
vrrp_script chk_httpd {
script “killall -0 httpd”
interval 2
weight 5
}

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 151
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass lkj879
}
track_script {
chk_httpd
}
virtual_ipaddress {
172.20.121.239/23
}
}

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88914

(0)
N26-深圳-城市蝸牛N26-深圳-城市蝸牛
上一篇 2017-11-26 17:17
下一篇 2017-11-26 20:33

相關推薦

  • 簡述Linux那些年–發展史

    Linux發展史 作者:任飛鵬          日期:2016-10-13 Linux簡介: Linux同Windows一樣,都是一套OS(操作系統)。Linux是一套開源的類Unix操作系統,可以免費使用和自由傳播。是一個基于POSIX和UNIX的多用戶、多任務、支…

    Linux干貨 2016-10-19
  • 15磁盤管理

    在系統中,常見的硬盤接口有分兩類:并行的和串行的 并行: IDE: 133MB/s SCSI: 640MB/s 串行: SATA: 6Gbps SAS: 6Gbps USB: 480MB/s 存儲設備的設備文件命名方式大致為:/dev/DEV_FILE IDE: /dev/hd#  #–>0,1,2,3 SCSI,SATA,SAS…

    Linux干貨 2016-12-02
  • vim編輯器

    vim編輯器:          文本:ASCII, Unicode(全球統一編碼格式)          文本編輯種類:       &n…

    Linux干貨 2016-08-10
  • CentOS下命令基礎練習

    馬哥教育網絡班23期+第五周課堂作業 CentOS下命令基礎練習 1、顯示當前系統上root、fdeora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello() 3、使用echo命令輸出一個絕對路徑 使用grep取出其基名 擴展:取出其路徑名 (…

    Linux干貨 2016-10-24
  • mysql or條件可以使用索引而避免全表

    在某些情況下,or條件可以避免全表掃描的。 1 .where 語句里面如果帶有or條件, myisam表能用到索引, innodb不行。 1)myisam表:  CREATE TABLE IF NOT EXISTS `a` (   `id` int(1)&nb…

    Linux干貨 2015-04-13
  • 第一周作業

    一·計算機組成及其功能     計算機由硬件和軟件組成,他們構成計算機系統 硬件:構成計算機的物理裝置包括中央控制器、存儲器、輸入設備、輸出設備。 中央控制器(CPU):由控制器、運算器、寄存器和緩存組成。cpu的主頻越高和緩存越大性能越好。主頻是中央處理器時鐘的頻率,通常以兆赫茲(MHZ)為單位。緩存:可以進行高速數…

    Linux干貨 2016-12-01
欧美性久久久久