用keepalived高可用LVS-dr模型

環境四個虛擬機

Real server:node1:172.16.100.6 ? ? ? ? CeotOS 6

Real server:node3:172.16.100.69 ? ? ? ? CeotOS 7

Director1:172.16.100.67 ? ? ? ? ? ? ? ? ? ? ? ?CeotOS 7

Director1:172.16.100.68 ? ? ? ? ? ? ? ? ? ? ??CeotOS 7

Node1

# rpm –q httpd

# echo “<h1>RS1 CentOS 6</h1>” > /var/www/html/index.html

Node3

# rpm –q httpd

# echo “<h1>RS1 CentOS 7</h1>” > /var/www/html/index.html

在瀏覽器中測試一下

D1

# yum install ipvsadm –y

# ip addr add 172.16.100.88/32 dev ens33????? 配置vip

# ip addr list

用別的主機ping 172.16.100.88

Node1

# vim set.sh

#!/bin/bash

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_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

;;

stop)

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_ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

;;

esac

# bash set.sh

# cat /proc/sys/net/ipv4/conf/all/arp_ignore

1

# ls

# scp set.sh 172.16.100.69:/root/

Node 3

# bash set.sh

# cat /proc/sys/net/ipv4/conf/all/arp_ignore

1

Node1和Node3

# ifconfig lo:0 172.16.100.88 netmask 255.255.255.255 broadcast 172.16.100.88 up

# route add –host 172.16.100.88 dev lo:0

D1

# ipvsadm –A –t 172.16.100.88 –s rr

# ipvaadm –a –t 172.16.100.88 –r 172.16.100.6 –g –w 1

# ipvaadm –a –t 172.16.100.88 –r 172.16.100.69 –g –w 2

# ipvsadm –L –n

用別的客戶端 curl http://172.16.100.88

# ipvsadm –L –n

# ipvsadm –C 清空規則

# ip addr del 172.16.100.88/32 dev ens33

# ip addr list

準備第2個director(172.16.100.68)

# yum install ipvsadm –y

# ip addr add 172.16.100.88/32 dev ens33

# ipvsadm –A –t 172.16.100.88:80 –s wrr

# ipvaadm –a –t 172.16.100.88:80 –r 172.16.100.6 –g –w 1

# ipvaadm –a –t 172.16.100.88:80 –r 172.16.100.69 –g –w 2

# ipvsadm –L –n

用別的客戶端 curl http://172.16.100.88

# ipvsadm –C 清空規則

# ip addr del 172.16.100.88/32 dev ens33

# ip addr list

讓兩個director擁有sorry server (D1和D2)

#yum install httpd –y

#echo “<h1>sorry, under maintenance(68)</h1>” > /var/www/html/index.html

#systemctl start httpd.server

# yum install keepalived -y

# cd /etc/keepalived

# cp keepalived.conf {,.bakeup}

# vim keepalived.conf

! Configuration File for keepalived

 

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalive@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_mcast_group4 224.0.0.18

}

 

            vrrp_script chk_mt {

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

interval 1

weight -2

}

 

vrrp_instance VI_1 {

state MASTER

interface ens33

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.16.100.88/16 dev ens33 label ens33:1

}

track_script {

chk_mt

}

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

}

virtual_server 172.16.100.88 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.0.0

protocol TCP

real_server 172.16.100.6 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.16.100.69 80 {

weight 2

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

# scp keepalived.conf 172.16.100.68:/etc/keepalived/

# vim notify

#!/bin/bash

#

 

vip=172.16.100.88

contact=’root@localhost’ 聯系人

 

notify() {

mailsubject=”`hostname` to be $1: $vip floating”??? 郵件主題

mailbody=”`date ‘+%F %H:%M:%S’`: vrrp transition, `hostname` changed to be $1″??? 郵件主體部分

echo $mailbody | mail -s “$mailsubject” $contact

}

 

case “$1” in

master)

notify master

exit 0

;;

backup)

notify backup

exit 0

;;

fault)

notify fault

exit 0

;;

*)

echo ‘Usage: `basename $0` {master|backup|fault}’

exit 1

;;

esac

# chmod +x notify.sh

# scp notify.sh 172.16.100.68:/etc/keepalived/

# systemctl start keepalived.service

D2

# vim keepalived.conf

vrrp_instance VI_1 {

state BACKUP

interface ens33

virtual_router_id 51

priority 99

advert_int 1

vrrp_mcast_group4 224.0.0.18

authentication {

auth_type PASS

auth_pass 1111

}

}

# systemctl start keepalived.service

D1

# tcpdump –i ens33 –nn host 172.16.100.67

# ip addr list

# ipvsadm –L –n

# mail

用瀏覽器訪問172.16.100.88

D1和D2

# vim keepalived.conf(定義sorry server)

virtual_server 172.16.100.88 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.0.0

protocol TCP

sorry_server 127.0.0.1 80

讓D1掛了,看D2能否運行

D1 # touch down

# ip addr list

D2 # ip addr list

D1

# systemctl statu keepalived.service?? 日志功能

原創文章,作者:nene,如若轉載,請注明出處:http://www.www58058.com/88149

(0)
nenenene
上一篇 2017-10-14 21:44
下一篇 2017-10-15

相關推薦

  • class12 shell編程(四)軟件包管理(二)

    一、shell編程(四) 1、循環特殊用法 while 循環的特殊用法(遍歷文件的每一行): while read line; do       循環體   done < /PATH/FROM/SOMEFILE 依次讀取/P…

    Linux干貨 2016-08-24
  • ?Linux基礎知識之磁盤及文件系統管理(一)

    1.設備類型:     塊設備(block):隨機訪問,數據交換單位是"塊"     字符設備(character):線性訪問,數據交換的單位是"字符" 2.設備文件:FHS     /dev &nb…

    Linux干貨 2016-08-29
  • httpd 安裝配置

    web 服務介紹 web服務時一種應用程序的服務,它所提供的最主要的信息是一種超文本標記語言(HTML)、多媒體資源(如:視頻、圖片、音樂等)。HTML是一種純文字的文本信息,通過所謂的標簽來規范所要顯示的內容格式,在客戶端通過瀏覽器的形式對HTML及多媒體資源進行解析,然后呈現在終端上。主要由http和https協議實現 http協議 HTTP是一個屬于應…

    Linux干貨 2016-11-01
  • 修改文件的權限

        linux中一切皆文件,文件有權限,所有者,所屬組,大小等屬性。文件所有者是指創建文件的用戶,所屬組是指創建文件的用戶屬于哪一個主要的組(用戶的主組只能有一個)。     用戶對文件進行各種操作的前提是有相應的權限,所以有些文件我們只能讀,不能寫,而有些文件既可以讀寫,還可以更改內容,下面就…

    2017-07-30
  • 分布式系統的事務處理

    當我們在生產線上用一臺服務器來提供數據服務的時候,我會遇到如下的兩個問題: 1)一臺服務器的性能不足以提供足夠的能力服務于所有的網絡請求。 2)我們總是害怕我們的這臺服務器停機,造成服務不可用或是數據丟失。 于是我們不得不對我們的服務器進行擴展,加入更多的機器來分擔性能上的問題,以及來解決單點故障問題。 通常,我們會通過兩種手段來擴展我們的數據服務: 1)數…

    Linux干貨 2016-08-15
  • Basic認證

    basic認證: (1) 定義安全域 [root@bluee htdocs]# mkdir admin [root@bluee htdocs]# vim admin/index.html 刷新瀏覽器,可以看到admin/index.html文件內容“Page FOR Adminstration” 編輯配置文件: 找個位置增加一個Directoty: <…

    Linux干貨 2016-08-05
欧美性久久久久