ldirectord 結合ipvsadm 配置nat,dr模型

ldirectord 結合ipvsadm 配置nat,dr模型 

一、nat模型

1、 drector # wget ftp://172.16.0.1/pub/Sources/7.x86_64/crmsh/ldirectord-3.9.6-0rc1.1.1.x86_64.rpm

# yum -y install nginx (同時用于做為sorry主機)

# yum -y install ldirectord-3.9.6-0rc1.1.1.x86_64.rpm

# echo “sorry, the service is down for maintenance, is recovering” > /usr/share/nginx/html/index.html 

主機為兩塊網卡, 一個是橋接,一個僅主機 (其中僅主機的配置靜態地址為192.16.0.5) 

開啟核心轉發功能 

# echo 1 > /proc/sys/net/ipv4/ip_forward 

nod1 # yum -y install httpd 

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

主機為一塊網卡,僅主機(配置靜態地址為192.16.0.2)

網關指向 192.16.0.5  

# route add default gw 192.16.0.5 

node2   # yum -y install nginx 

# echo “<h1>RS2</h1>” > /var/www/html/index.html 

主機為一塊網卡,僅主機(配置靜態地址為192.16.0.3)

網關指向 192.16.0.5  

# route add default gw 192.16.0.5 

directory 此時:可以在drector主機上進行測試,

# curl 192.16.0.2 返回RS1 

# curl 192.16.0.3 返回RS2 

directory 使用ipvsadm指定調度算法及調度主機;

# ipvsadm -A -t 172.16.250.89:80 -wrr 

# ipvsadm -a -t 172.16.250.89:80 -r 192.16.0.2:80 -m -w 3 

# ipvsadm -a -t 172.16.250.89:80 -r 192.16.0.3:80 -m -w 1

在別的主機中測試結果 

# for i in {1..4} ; do curl 172.16.250.89; done 

<h1>RS1</h1>

<h1>RS2</h2>

<h1>RS1</h1>

<h1>RS1</h1>

# 將規則保存 ipvsadm -S > /etc/sysconfig/ipvsadm 

2、 directory 配置ldirectord 

# cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/ldirectord.cf 

# vim /etc/ha.d/ldirectord.cf 

checktimeout=3

checkinterval=1

fallback=127.0.0.1:80

autoreload=yes

logfile=”/var/log/ldirectord.log”

quiescent=no

virtual=172.16.250.89:80 

real=192.16.0.2:80 masq 1

real=192.16.0.3:80 masq 3

fallback=127.0.0.1:80 masq

service=http

scheduler=wrr

protocol=tcp

checktype=negotiate

checkport=80

注:virtual:172.16.250.89:80 ,后面需要指定端口,否則protocol=tcp指定啟動時會報錯 

real=192.16.0.2:80 masq  因為上面配置的為nat模型,所以此處使用masq 

fallback=172.0.0.1:80 此處便是nginx的sorry server,但所有結點都停掉時,會向用戶提供一個sorry server 

# systemctl start ldirectord 

# ipvsadm -Ln 查看結點 

在別的主機中測試 

#for i in {1..4} ; do curl 172.16.250.89; done 

<h1>RS2</h2>

<h1>RS1</h1>

<h1>RS2</h2>

<h1>RS2</h2>

node1,node2 將兩個結點手動停掉

# systemctl stop httpd  在測試主機中會返回sorry信息

二 、 dr 模型

1、 directory ,node1 ,node2 三臺主機都是一塊網塊, 并且網卡都為橋接,且node1,nod2,不需要指定網關

編寫腳本

#vim setkp.sh 

#!/bin/bash 

vip=172.16.252.166

mask=255.255.255.255

interface=’lo:0′

eth=’eno16777736:0′ 

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

ifconfig $interface $vip netmask $mask broadcast $vip up 

route add -host $vip dev $interface 

;; 

dstart) 

ifconfig $eth $vip/32 netmask $mask broadcast $vip up

;;

dstop)

ifconfig $eth down

;;

stop)

ifconfig $interface down 

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

;; 

status) 

ifconfig 

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

cat /proc/sys/net/ipv4/conf/lo/arp_ignore

cat /proc/sys/net/ipv4/conf/all/arp_announce

cat /proc/sys/net/ipv4/conf/lo/arp_announce

;; 

*)

echo “Usage: $(basename $0) {dstart|dstop|start|stop}”

exit 1 

esac

在director主機中執行 

# sh setkp.sh dstart 

# sh setkp.sh status 查看狀態

# scp setkp.sh 172.16.251.232:/root

# scp setkp.sh 172.16.251.191:/root 

# ipvsadm -A -t 172.16.252.166:http -s wrr

# ipvsadm -a -t 172.16.252.166:http -r 172.16.251.232:http -g -w 1

# ipvsadm -a -t 172.16.252.166:http -r 172.16.251.191:http -g -w 3

# systemctl start nginx 

# echo “Sorry Page” > /usr/share/nginx/html/index.html 

在node1主機中執行

# sh setkp.sh start 

# sh setkp.sh status 

# systemctl start httpd 

echo “<h1>NODE1</h1>” > /var/www/html/index.html 

  在node2主機中執行 

# sh setkp.sh start

# sh setkp.sh status 

# systemctl start httpd 

echo “<h2>NODE2</h2>” > /var/www/html/index.html  

在其它主機中進行測試

#for i in {1..4} ; do curl 172.16.252.166; done 

<h1>RS1</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

2、 ldirectord配置

# cat /etc/ha.d/ldirectord.cf | grep -v  “^[[:space:]]*#” | grep -v “^[[:space:]]*$” 

# vim /etc/ha.d/ldirectord.cf 

checktimeout=3

checkinterval=1

fallback=127.0.0.1:80

autoreload=yes

logfile=”/var/log/ldirectord.log”

quiescent=no

virtual=172.16.252.166:80

real=172.16.251.191:80 gate 1

real=172.16.251.232:80 gate 3

fallback=127.0.0.1:80 gate

service=http

scheduler=wrr

protocol=tcp

checktype=negotiate

checkport=80

# systemctl start ldirectord 

在其它主機中進行測試 

# for i in {1..4} ; do curl 172.16.252.166; done 

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS2</h2>

<h1>RS1</h2>

當主機所有結點都停止服務時 (node1,node2)

# systemctl stop httpd 

# for i in {1..4} ; do curl 172.16.252.166; done 

Sorry Page

Sorry Page

Sorry Page

Sorry Page

 3 、借助防火墻標記來分類報文,而后標記定義集群服務,這樣不同的服務可以使用一個集群進行調度,并啟用持久連接 

將兩臺node結點啟動 

# systemctl start httpd 

在director主機中配置 

# iptables -t mangle -A PREROUTING -d 172.16.252.166 -p tcp -m multiport –dport 80,443 -j MARK –set-mark 10 為端口打標記 

# ipvsadm -A -f 10 -s rr -p 360

# ipvsadm -a -f 10 -r 172.16.251.191:0 -g -w 1

# ipvsadm -a -f 10 -r 172.16.251.232:0 -g -w 1

在其它主機中進行測試 

# for i in {1..5} ; do curl 172.16.252.166; done 

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS1</h2>

在兩臺node結點上建立https服務

nod1 # mkdir /etc/httpd/cacert 

# cd /etc/httpd/cacert 

# (umask 066;openssl genrsa -out httpd.key 1024)

# openssl req -new -key httpd.key  -out httpd.crt -days 7200

# scp httpd.csr 172.16.252.162:/root

在director主機中生成自簽證書

# echo 01 > /etc/pki/CA/serial

# touch /etc/pki/CA/index.txt 

# cd /etc/pki/CA/

# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

# openssl ca -in /root/httpd.csr  -out /tmp/httpd.crt

# scp /tmp/httpd.crt  172.16.251.232:/root

# scp /etc/pki/CA/cacert.pem  172.16.250.69:/root

nod2    # mkdir /etc/httpd/cacert

nod1    # cd /etc/httpd/cacert/ && scp * 172.16.251.191:/etc/httpd/cacert/ 

nod1,node1 # vim /etc/httpd/conf.d/ssl.conf  

修改 : SSLCertificateFile /etc/httpd/cacert/httpd.crt

  SSLCertificateKeyFile /etc/httpd/cacert/httpd.key 

# systemctl restart httpd

在其它主機中進行測試:

# vim /etc/hosts 

加入 : 172.16.252.166  www.rj.com 

測試https與http的持久連接 

# for i in {1..4} ;do curl –cacert /root/cacert.pem https://www.rj.com && curl http://www.rj.com ; done 

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

<h1>RS2</h2>

在 ldirectord 中實現 

driector   # vim /etc/ha.d/ldirectord.cf 

checktimeout=3

checkinterval=1

fallback=127.0.0.1:80

autoreload=yes

logfile=”/var/log/ldirectord.log”

quiescent=no

virtual=10

real=172.16.251.191:80 gate 1

real=172.16.251.232:80 gate 3

fallback=127.0.0.1:80 gate

service=http

scheduler=wrr

checktype=negotiate

checkport=80

# systemctl start ldirectord

# ipvsadm -Ln 

在其它主機中進行測試:

# for i in {1..4} ;do curl –cacert /root/cacert.pem https://www.rj.com && curl http://www.rj.com ; done 

<h1>RS1</h2>

<h1>RS2</h2>

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS1</h2>

<h1>RS2</h2>

<h1>RS1</h2>

<h1>RS1</h2>

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

(0)
renjinrenjin
上一篇 2013-09-03 10:04
下一篇 2014-01-22 06:00

相關推薦

  • 第六周作業補充-vim簡介及其使用方法詳細介紹

    What       Vim是由Vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在Unix& Unix Like操作系統中被廣泛使用。和Emacs并列成為Unix& Unix Like操作系統中最受歡迎的文本編輯器 When& Who  &nb…

    Linux干貨 2016-09-26
  • 網絡管理之配置靜態ip和多網卡綁定

    不知怎的,這幾天教室的網絡異常詭異,各種不穩定啊。原先小編都是通過自動獲?。╠hcp)的方式來進行網絡連接的,現在這種網絡情況下需要(static)的方式來配置一個固定的ip。步驟如下: 一、在終端中輸入:vim /etc/sysconfig/network-scripts/ifcfg-eth0 二、進行編輯并保存退出 三、重啟網絡服務:service ne…

    2017-09-10
  • 使用haproxy代理LAMP、LNMP 實現WordPress發布

    haproxy簡介 HAProxy是專業的反向代理軟件,它可以支持4層和7層代理服務。其配置包含一下幾個配置段: global:全局設置,通常與操作系統有關 defaults:配置默認參數,可以被frontend、backend、listen組件利用 frontend:接收親請求的前虛擬節點 backend:后端服務集群的配置,一個backend可以對應多個…

    2017-05-17
  • MySQL雙主復制模型

    配置雙主數據庫實例 雙方可以相互復制 為了不影響效果,兩臺虛擬機把剛才生成的數據文件都刪除 rm -rf /var/lib/mysql/* 1、時間要同步 2、雙方既要啟動中繼日志,也需要啟動二進制日志 3、編寫主的配置文件 雙主復制時有一個最大的問題,自動增長字段會重疊。為了避免重疊,一個節點使用奇數,另一個節點使用偶數 這里表示的意思,從1增長,一次增長…

    Linux干貨 2016-11-21
  • vim編輯器

      在linux系統中使用文本編輯器來編輯你的配置文件是一件很重要的事。vim是linux最常用的文本編輯器,具有以下優勢:所有的linux都內置vi文本編輯器。很多軟件都會主動調用vi,如crontab、visudo等. 所以我們必須學好vi,vim分為以下3種模式:   一般模式: 用 vi打開一個文件時,一進入該文件就是一般模式了?!?/p>

    Linux干貨 2016-06-09
  • 進程及任務管理

    進程概念 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等 Process: 運行中的程序的一個副本,是被載入內存的一個指令集合     進程ID(Process ID,PID)號碼被用來標記各個進程     UID、GID、和SELi…

    Linux干貨 2016-09-09
欧美性久久久久