日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2、Keepalived提供日志与双主模型演示

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2、Keepalived提供日志与双主模型演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Keepalived實例演示:

利用keepalived流動一個VIP,在提供LVS的高可用以及實現對LVS后端的real server做健康狀態檢測,最后實現高可用nginx。

?

HA Cluster配置前提:

1、本機的主機名,要與hostname(uname -n)獲得的名稱保持一致;

CentOS 6: /etc/sysconfig/network

CentOS 7: hostnamectl set-hostname HOSTNAME

各節點要能互相解析主機名;一般建議通過hosts文件進行解析;

2、各節點時間同步;

3、確保iptables及selinux不會成為服務阻礙;

示例演示

這里利用兩臺主機進行演示192.168.184.141/142

# cat /etc/centos-release? //查看版本

CentOS Linux release 7.4.1708 (Core)?

# hostname

node1

# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.184.141 node1? ?/此處對應的是node1
192.168.184.142 node2

為了測試兩個主機時間是否一致??http://www.zsythink.net/archives/2375

# date; ssh node2 'date'? //這里需要用到兩臺主機免密碼交互

# ssh-keygen? //回車到底

# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.184.142? ?//把node1生成的公鑰發送至node2上

# ssh root@192.168.184.142? //進行測試

Last login: Sat Dec? 1 10:55:23 2018 from 192.168.184.141

# date; ssh node2 'date'

Sat Dec 1 11:01:33 CST 2018? ?//兩臺主機差一秒鐘
Sat Dec 1 11:01:32 CST 2018

這里使用ntp同步時間

配置前先使用命令:ntpdate -u cn.pool.ntp.org,同步服務器,如果這個命令不生效可使用:#ntpd -u cn.pool.ntp.org

# date; ssh node2 'date'
? ?Sat Dec 1 11:35:06 CST 2018
? ?Sat Dec 1 11:35:06 CST 2018

# yum install keepalived -y? //兩天主機分別安裝上keepalived

下面配置keeplived

在Master節點(192.168.184.141)進行配置

# cp keepalived.conf{,.backup}? //首先對/etc/keepalived下的文件進行備份

# vim /etc/keepalived/keepalived.conf

:.,$s/^/#/g? //現在virtual host是用不到的,所以在第一個virtual host到最后一行的前面全部添加#

1 ! Configuration File for keepalived 2 3 global_defs { //全局定義 4 notification_email { //警告信息發送的目標郵箱,下面三個郵箱 5 acassen@firewall.loc 6 failover@firewall.loc 7 sysadmin@firewall.loc
root@localroot //把上面三個修改為此行
8 }
9 notification_email_from Alexandre.Cassen@firewall.loc //指明發件人
10 smtp_server 192.168.200.1 //指明由哪個郵件服務器把警告發出 11 smtp_connect_timeout 30 12 router_id LVS_DEVEL //定義當前物理設備的唯一標識 13 vrrp_skip_check_adv_addr 14 vrrp_strict 15 vrrp_garp_interval 0 16 vrrp_gna_interval 0

9-16行修改如下
notification_email_from kaadmin@localhost //修改上面的發件人如此行,可以隨便修改
smtp_server 127.0.0.1 //每一個主機在安裝完成服務器后默認郵件服務127.0.0.1都是開放的
vrrp_mcast_group4 224.0.0.141 //指定多播組,這里要注意會有沖突
smtp_connect_timeout 30
router_id node1
17 } 18 19 vrrp_instance VI_1 { //虛擬路由實例 20 state MASTER //定義初始狀態,如果是master,優先級最高,因為工作在搶占模式下,這個優先級比其他服務器低的話會被會被其他服務器搶走 21 interface eth0 //vrrp主要是流動IP地址,這里指定IP地址配置的網卡,vrrp會自動使用ifconfig或者ip命令在物理網卡上以定義別名的方式或者添加輔助地址的方式配置VIP地址 22 virtual_router_id 51 //虛擬路由器的id號,必須唯一,這個是VRID,0-255,這個VRID也是做VMAC最后一段的地址,虛擬MAC地址的格式為00-00-5E-00-01-{VRID} 23 priority 100 //定義優先級,0-255,數字越大優先級越高 24 advert_int 1 //定義心跳信息發送的時間間隔。通告、廣播。主節點需要周期性的向其他備用節點通告自己的優先級和狀態信息即心跳。這里默認是1秒 25 authentication { //簡單字符認證 26 auth_type PASS 27 auth_pass 1111 28 } 29 virtual_ipaddress { //配置虛擬IP地址,配置在上面eth0的輔助地址或者別名上 30 192.168.184.150/24 (dev eth0 label eth0:0這些內容在centos6可以用) //這里的VIP一定不能和master和backup中的任何一臺主機的IP相沖突 33 }

virtual_ipaddress {? //配置虛擬IP地址的格式

<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>

IP地址? /掩碼? ? 廣播地址? dev配置在哪個設備上 scope作用域,默認是全局的? label定義別名,因為IP應該配置在網卡的別名上。

192.168.200.17/24 dev eth1

192.168.200.18/24 dev eth2 label eth2:1

}

nopreempt:非搶占模式;默認為搶占模式;

34 } 35 36 # virtual_server 192.168.200.100 443 {
# ...
# ...

上面配置完成后需要把master配置的keepalived.conf文件復制到node2的/etc/keepalived目錄下

# scp keepalived.conf node2:/etc/keepalived/? ?//注意這里已經使用了免密交互

# vim /etc/keepalived/keepalived.conf? ? //在node2即192.168.184.142上進行修改

router_id node2? ?//可以改也可以不改,兩臺路由器相同也沒有問題

state BACKUP? ? ? //必須改

priority 99? ? ? ?//這個要改的比master小

virtual_router_id 51? //這個一定要和master保持一致,因為master和backup構建為同一個虛擬路由,這里表示虛擬路由的id

# systemctl start keepalived; ssh node2 'systemctl start keepalived'? //在node1上即master(192.168.184.141)上同時啟動兩臺主機的keepalived

# ps -aux? //查看啟動進程?

# ip addr list? ? //在master(192.168.184.141)上查看配置的VIP,但是在BACKUP(192.168.184.142)上查看ip就沒有,因為VIP只綁定一下路由設備

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ce:f8:04 brd ff:ff:ff:ff:ff:ff inet 192.168.184.141/24 brd 192.168.184.255 scope global eth0valid_lft forever preferred_lft forever inet 192.168.184.150/24 scope global secondary eth0 //配置的VIP已經綁定了valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fece:f804/64 scope link valid_lft forever preferred_lft forever

由于keepalived的默認日志是LOG_DAEMON,但是#cat /etc/rsyslog.conf文件中的信息是沒有DAEMON的,

所以要修改配置文件/etc/sysconfig/keepalived添加日志,

當然日志并不一定非要打開,此時如果修改master和backup都要做修改

# vim /etc/sysconfig/keepalived? ?

1 # Options for keepalived. See `keepalived --help' output and keepalived(8) and 2 # keepalived.conf(5) man pages for a list of all options. Here are the most 3 # common ones : 4 # 5 # --vrrp -P Only run with VRRP subsystem. 6 # --check -C Only run with Health-checker subsystem. 7 # --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop. 8 # --dont-release-ipvs -I Dont remove IPVS topology on daemon stop. 9 # --dump-conf -d Dump the configuration data. 10 # --log-detail -D Detailed log messages. 11 # --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON) //修改日志級別 12 # 13 14 KEEPALIVED_OPTIONS="-D -S 3" 修改次數,開啟日志

# vim /etc/rsyslog.conf

1 # Save boot messages also to boot.log 2 local7.* /var/log/boot.log 3 local3.* /var/log/keepalived.log //插入此行

# systemctl restart rsyslog.service? ?//重載日志服務

# systemctl restart keepalived? ?//因為/etc/sysconfig/keepalived做了修改,所以這里也要重新啟動

# tail /var/log/keepalived.log? ? //此時就有日志了

Dec 1 20:42:49 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150 Dec 1 20:42:54 node1 Keepalived_vrrp[2489]: Sending gratuitous ARP on eth0 for 192.168.184.150

以上配置成功了?

下面把master節點的keepalived停止,查看VIP是否遷移到backup上

# systemctl stop keepalived

# ip addr list? ?//這時候再查看IP已經沒有VIP即192.168.184.150/24

# ip addr list? ?//在backup即192.168.184.142節點上查看,VIP已經遷移到此節點了

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:67:09:fe brd ff:ff:ff:ff:ff:ffinet 192.168.184.142/24 brd 192.168.184.255 scope global eth0valid_lft forever preferred_lft foreverinet 192.168.184.150/24 scope global secondary eth0valid_lft forever preferred_lft forever

下面再把之前的master即192.168.184.141啟動起來

# systemctl start keepalived? ?//在master上操作,因為141主機的優先級高且處于搶占模式下,所以當master的keepalived啟動后,立刻就把VIP搶回來了

[root@node1 log]# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ce:f8:04 brd ff:ff:ff:ff:ff:ffinet 192.168.184.141/24 brd 192.168.184.255 scope global eth0valid_lft forever preferred_lft foreverinet 192.168.184.150/24 scope global secondary eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fece:f804/64 scope link valid_lft forever preferred_lft forever

如何在master節點上不停止keepalived服務的情況下,把Master手動調度換成Backup?-->改變master的優先級

# vim /etc/keepalived/keepalived.conf? //無論master還是backup都要修改此文件

1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { 5 root@localhost 6 } 7 notification_email_from kaadmin@localhost 8 smtp_server 127.0.0.1 9 smtp_connect_timeout 30 10 router_id node1 11 vrrp_skip_check_adv_addr 12 vrrp_strict 13 vrrp_garp_interval 0 14 vrrp_gna_interval 0 15 } 16 17 vrrp_script chk_schedown { //vrrp_script是vrrp專用腳本,是vrrp的一個擴展,注意這個腳本要在vrrp_instance之外定義,但是卻在vrrp_instance內部調用這個腳本 18 script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" //執行腳本script,用""引起來的是腳本的內容。返回錯誤碼1就證明腳本執行成功。返回正確碼0證明腳本是執行失敗, 19 interval 1 //每隔2秒執行一次script這個腳本 //此處的意義是如果存在文件down,則證明管理員想手動減少本主機的優先級,即手動宕掉master換成backup, 20 weight -2 //優先級減少2 //文件down存在,則返回錯誤碼1,執行后面19、20兩行,如果文件down不存在,則返回正確碼0,不執行后面的操作了 21 } 22 23 vrrp_instance VI_1 { 24 state MASTER 25 interface eth0 26 virtual_router_id 51 27 priority 100 28 advert_int 1 29 authentication { 30 auth_type PASS 31 auth_pass 1111 32 } 33 virtual_ipaddress { 34 192.168.184.150/24 35 } 36 track_script { //定義指明在vrrp虛擬實例中調用腳本 37 chk_schedown 38 } 39 }

# systemctl restart keepalived.service; ssh node2 'systemctl restart keepalived.service'? ?//master節點和backup節點配置好后都重啟

# touch down? //此時按照正常是應該實現IP漂移的,但是并沒有,所以只能另找他法了。

這里把vrrp_script段的腳本內容([[ -f /etc/keepalived/down ]] && exit 1 || exit 0)寫到一個腳本中,并把這個腳本的路徑寫到此處

# vim /etc/keepalived/down.sh? ?//注意:無論是master還是backup都需要修改

#! /bin/bash

[[ -f /etc/keepalived/down ]] && exit 1 || exit 0

# chmod +x /etc/keepalived/down.sh

# vim /etc/keepalived/keepalived.conf

vrrp_script chk_down {
? ? ?script "/etc/keepalived/down.sh"
? ? ?interval 1
? ? ?weight -10
}

#systemctl restart keepalived; ssh node2 'systemctl restart keepalived'?

# touch /etc/keepalived/down? ?//此時就實現了IP漂移

# ip addr list

NAT模型的LVS,后端是兩個real server(web服務器集群),如何做高可用?高可用LVS
基于NAT模型做高可用,后端的real server的網關應該指向路由設備的DIP,為了把路由做高可用,應該為路由設備提供一個VIP,以方便互聯網上的用戶可以訪問,
外部接口有自己的地址,同時在外部接口上配置一個別名地址當互聯網上請求的地址,一旦路由設備A宕機,別名地址就流轉到路由設備B,路由設備B同樣有自己的外部接口
VIP,所以把別名地址就附加在外部接口上。同時后端的real server指向路由設備的網關同樣要遷移到路由設備B,但是地址寫死在接口上不可能遷移,所以仿照外部接口
的別名地址的方法,在內網接口上添加別名地址,把別名地址當DIP即內部real server的網關。外部接口的別名地址VIP在那個路由設備上內部接口的別名地址DIP就在
那個路由設備上,路由設備A和路由設備B此時各為一個實例,這兩個實例上的兩個別名地址要同步進退。
就把上述定義為vrrp的實例同步組:vrrp_sync_group,但很少使用LVS做負載均衡集群。

?# man keepalived.conf? //配置方法

VRRP synchronization group(s)#string, name of group of IPs that failover togethervrrp_sync_group VG_1 {group {inside_network # name of the vrrp_instance (see below)outside_network # One for each movable IP...}

VIP和DIP無論必須同時遷移到同一個主機上

vrrp_sync_group VG_1 {? ?//定義把哪些實例定義為一個組

group {? //表示把VI_1和VI_2定義為一個組

VI_1?? # name of vrrp_instance (below)

VI_2? ?# One for each moveable IP.

}

}

vrrp_instance VI_1 {? //實例1

eth0? //外網網卡

vip? ?//外網網卡定義的別名

}

vrrp_instance VI_2 {

eth1? ?//內網網卡

dip? ? //內網網卡定義的別名

}

以上只有在LVS的NAT模型下采用到此功能,因為NAT模型下后端的real server的網關需要指向dip

另一種情形:雙主模型,兩個路由設備都工作起來,各承擔一部分的工作(這里做LVS集群,但不考慮DIP做網關的場景)

作為一個路由/負載均衡器來講必須有一個外網接口的流動地址接收客戶端的請求,這個地址流動的,它在那個主機上那個主機就是主節點,上述情景總有一個路由器是空閑的。為了充分利用,可以把域名解析為兩個A記錄(VIP1和VIP2),而且這兩個VIP都配置在外網接口上,即兩個外網輔助地址,但是不在同一路由設備上,這是為了實現雙主都活動的目的。為了讓兩個流動IP不同步進退,要把兩個路由設備做成兩個實例,對于第一個實例來講router1優先級高,router2優先級低,流動IP在router1上;對于第二個實例router2來講,router2優先級高,router1優先級低,流動IP配置在router2上的外網接口上。一旦router1出現故障,就把router1的流動IP漂移到router2的外網網卡接口上,這樣兩個流動IP全在router2上,他們使用不同的別名或者向網卡配置兩個不同的輔助地址,一旦router1上線,流動IP就重新遷回router1的外網網卡上。

以上就可以實現均衡的效果,上述是兩個虛擬實例,但是這兩個實例不是同進退。

或理解為

有三個虛擬路由器存在:

虛擬路由器1:Device A作為Master路由器,Device B和Device C作為Backup路由器。

虛擬路由器2:Device B作為Master路由器,Device A和Device C作為Backup路由器。

虛擬路由器3:Device C作為Master路由器,Device A和Device B作為Backup路由器。

為了實現業務流量在Device A、Device B和Device C之間進行負載分擔,需要將局域網內的主機的默認網關分別設置為虛擬路由器1、2和3。在配置優先級時,需要確保三個虛擬路由器中各路由器的VRRP優先級形成一定的交叉,使得一臺路由器盡可能不同時充當2個Master路由器。?

示例演示

# vim /etc/keepalived/keepalived.conf? //現在master即192.168.184.141上修改

:.,40y? ?//從當前行復制到第40行

1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { 5 root@localhost 6 } 7 notification_email_from kaadmin@localhost 8 smtp_server 127.0.0.1 9 smtp_connect_timeout 30 10 router_id node1 11 vrrp_skip_check_adv_addr 12 vrrp_strict 13 vrrp_garp_interval 0 14 vrrp_gna_interval 0 15 } 16 17 vrrp_script chk_down { 18 script "/etc/keepalived/down.sh" 19 interval 1 20 weight -10 21 } 22 23 vrrp_instance VI_1 { 24 state MASTER 25 interface eth0 26 virtual_router_id 50 27 priority 100 28 advert_int 1 29 authentication { 30 auth_type PASS 31 auth_pass 1111 32 } 33 virtual_ipaddress { 34 192.168.184.150/24 35 } 36 37 track_script { 38 chk_down 39 } 40 } 41 42 vrrp_instance VI_2 { //vrrp虛擬實例的名字不能相同 43 state BACKUP //修改 44 interface eth0 45 virtual_router_id 51 //router ID能一樣 46 priority 99 //修改 47 advert_int 1 48 authentication { 49 auth_type PASS 50 auth_pass 2222 //修改 51 } 52 virtual_ipaddress { 53 192.168.184.151/24 //這里代表router2的流動IP 54 } 55 56 track_script { //這里最好修改,如果不修改可能同步掉線 57 chk_down 58 } 59 }

修改完141主機的下面把修改好的keepalived.conf復制到142上

# scp keepalived.conf root@node2:/etc/keepalived/? //這里兩臺主機是免密的,另外/etc/hosts可以解析node2

# vim keepalived.conf? ?//在192.168.184.142修改如下

1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { 5 root@localhost 6 } 7 notification_email_from kaadmin@localhost 8 smtp_server 127.0.0.1 9 smtp_connect_timeout 30 10 router_id node2 //修改如下 11 vrrp_skip_check_adv_addr 12 vrrp_strict 13 vrrp_garp_interval 0 14 vrrp_gna_interval 0 15 } 16 17 vrrp_script chk_down { 18 script "/etc/keepalived/down.sh" 19 interval 1 20 weight -10 21 } 22 23 vrrp_instance VI_1 { 24 state BACKUP //修改如下 25 interface eth0 26 virtual_router_id 50 27 priority 99 //修改如下 28 advert_int 1 29 authentication { 30 auth_type PASS 31 auth_pass 1111 32 } 33 virtual_ipaddress { 34 192.168.184.150/24 35 } 36 37 track_script { 38 chk_down 39 } 40 } 41 42 vrrp_instance VI_2 { 43 state MASTER //修改如下 44 interface eth0 45 virtual_router_id 51 46 priority 100 //修改如下 47 advert_int 1 48 authentication { 49 auth_type PASS 50 auth_pass 2222 51 } 52 virtual_ipaddress { 53 192.168.184.151/24 54 } 55 56 track_script { 57 chk_down 58 } 59 }

#?systemctl restart keepalived.service; ssh node2 'systemctl restart keepalived.service'

# ip addr list? //在router1上

# touch down? //在141上創建down文件

故障總結:

1、日志?

2、每個vrrp_instance需要專用的組播地址;

?

?

轉載于:https://www.cnblogs.com/hanshanxiaoheshang/p/10048333.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的2、Keepalived提供日志与双主模型演示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。