lvs筆記之nat&dr模型簡單實現

lvs筆記之nat&dr模型簡單實現

lvs筆記之nat&dr模型簡單實現

lvs 集群 實現 負載均衡 nat


ipvsadm使用說明

    -A: 添加一個集群服務
    -t: tcp
    -u: udp
    -f: firewall mark,
        通常用于將兩個或以上的服務綁定為一個服務進行處理時使用
        例如httpd和https
        iptables mongo表一起使用

        service-address:
    -t IP:port
    -u ip:port
    -f firewall_mark

    -s 調度方法,默認為wlc
    -p timeout: persistent connection, 持久連接
    -E 修改定義過的集群服務
    -D -t|u|f service-address:刪除指定的集群服務
RS相關:  
    -a:向指定的Cluster services中添加RS
    -t|-u|-f service-address:指明將RS添加至哪個Cluster Service中
    -r: 指定RS,可包含{IP[:port]},只有支持端口映射的LVS類型才允許此處使用跟集群服務中不同的端口
LVS類型:
    -g: Gateway模式,就是DR模型(默認)
    -i: ipip模式,TUN模型
    -m: masquerade地址偽裝自動完成后半段的原地址轉換,NAT
指定RS權重:
    -w # 省略權重為1
    -e: 修改指定的RS屬性
    -d -t|u|f service-address -r server-address:從指定的集群服務中刪除某RS
    -C :清空集群服務配置
保存規則:
    ipvsadm-save 
    ipvsadm -S
載入指定的規則:
     ipvsadm-restore
     ipvsadm -R
查看ipvs規則:
    -L [options]
    -n: 數字格式顯示IP地址
    -c: 顯示連接數相關信息
    --stats: 顯示統計數據
    --rate: 速率
    --exact:顯示統計數據的精確值
    --timeout: 超時時間
     -Z: 計數器清零;

lvs-nat的簡單實現

實驗拓撲如下圖:
lvs_nat.jpg-26.8kB

如圖所示lvs-nat實現對后端2臺real server(搭建apache httpd服務)進行負載均衡。

step1:

    1、按照拓撲所示配置好IP地址
    2、director需要準備兩塊網卡(一塊公網網卡配置vip,一塊內網網卡配置dip)
    3、后端兩臺real server準備一塊網卡(內網網卡)配置rip,注意網關需要指向dip

step2各節點網絡設置如下:

以下是director上的配置:

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:37:63:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.146/24 brd 192.168.2.255 scope global dynamic eno16777736
       valid_lft 4229sec preferred_lft 4229sec
    inet6 fe80::20c:29ff:fe37:6302/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:37:63:0c brd ff:ff:ff:ff:ff:ff
    inet 192.168.253.153/24 brd 192.168.253.255 scope global eno33554984
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe37:630c/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=192.168.2.146
NETMASK=255.255.255.0
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="ee2e45b1-4b9c-41cb-8507-de93e3827896"
DEVICE="eno16777736"
ONBOOT="yes"
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984 
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=192.168.253.153
NETMASK=255.255.255.0
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno33554984"
DEVICE="eno33554984"
ONBOOT="yes"

以下是rs1、和rs2的配置:
QQ圖片20161211224831.png-32.3kB
QQ圖片20161211225106.png-32.4kB

注意real server的網關要指向dip


step3在real server上進行如下操作:

以下是real server1上進行的操作:
# yum install httpd -y &> /dev/null && echo success || echo failure    #RS1安裝httpd
success #安裝成功
#route add default gw 192.168.253.153  #設置默認網關為Director的DIP
# echo "<h1>This is Real Server 1 </h1>" > /var/www/html/index.html   #添加測試網頁
#systemctl start httpd #啟動httpd服務

以下是real server2上進行的操作:
# yum install httpd -y &> /dev/null && echo success || echo failure    #RS1安裝httpd
success #安裝成功
#route add default gw 192.168.253.153  #設置默認網關為Director的DIP
# echo "<h1>This is Real Server 2 </h1>" > /var/www/html/index.html #添加測試網頁
#systemctl start httpd #啟動httpd服務

step4在director上進行操作:

# yum install ipvsadm -y   #安裝ipvsadm
[root@localhost ~]#  curl 192.168.253.169   #測試rs是否可以服務
<h1>This is Real Server 1 </h1>
[root@localhost ~]#  curl 192.168.253.168  #測試rs是否可以服務
<h1>This is Real Server 2 </h1>
[root@localhost ~]#  vim /etc/sysctl.conf   #編輯內核文件開啟內核路由轉發

# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1  #添加該項設置
[root@localhost ~]# sysctl -p  #對剛才的修改進行立即生效
net.ipv4.ip_forward = 1  #可見已經生效
[root@localhost ~]#  cat /proc/sys/net/ipv4/ip_forward  #查看是否開啟路由轉發功能
1  #開啟
[root@localhost ~]# ipvsadm -A -t 192.168.2.146:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.2.146:80 -r 192.168.253.169 -m
[root@localhost ~]# ipvsadm -a -t 192.168.2.146:80 -r 192.168.253.168 -m
[root@localhost ~]#  ipvsadm -Ln  #查看規則
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.146:80 rr
  -> 192.168.253.168:80           Masq    1      0          0         
  -> 192.168.253.169:80           Masq    1      0          0 
[root@localhost ~]#  curl http://192.168.2.146
<h1>This is Real Server 2 </h1>
[root@localhost ~]#  curl http://192.168.2.146
<h1>This is Real Server 1 </h1>

測試:
QQ圖片20161209151052.png-15.9kB
QQ圖片20161209151059.png-23.5kB

踩過的坑1

在實驗過程中遇到了瀏覽器訪問vip失敗,但是director上curlvip卻可以的情況后來排查發現real server開啟了兩塊網卡(一塊外網,一塊內網,瀏覽器可以通過外網ip訪問real server上的web服務),當我只啟用了內網網卡時,瀏覽器成功訪問vip。
 因此當你實驗失敗時請從以下兩點排查:
       1、real server是否啟用了多塊網卡,如果是請禁用多余的 只啟用內網網卡。并且把網關指向dip
       2 關閉iptables和selinux(或者設置合適的規則)

lvs-dr實現

實驗拓撲如下:
lvs_dr拓撲.jpg-98.4kB

后端兩臺real server搭建httpd服務(默認已搭建完成并啟動),各節點iptables和selinux均已關閉

step1在director上執行如下操作:

#ifconfig eno16777736:0 192.168.2.11/32 broadcast 192.168.2.11 up
#route add -host 192.168.2.11 dev eno16777736:0

step2在real server1上執行如下操作:

#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/eno16777736/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/eno16777736/arp_announce
#添加如上內核參數,注意要在director節點添加ipvs規則前做此步操作
#ifconfig lo:0 192.168.2.11/32 broadcast 192.168.2.11 up
#route add -host 192.168.2.11 dev lo:0
#echo "<h1>This is Real Server 1 </h1>" > /var/www/html/index.html

step3在real server2上執行如下操作:

#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/eno16777736/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/eno16777736/arp_announce
#添加如上內核參數,注意要在director節點添加ipvs規則前做此步操作
#ifconfig lo:0 192.168.2.11/32 broadcast 192.168.2.11 up
#route add -host 192.168.2.11 dev lo:0
#echo "<h1>This is Real Server 2 </h1>" > /var/www/html/index.html

step4在director節點執行如下操作:

  #ipvsadm -A -t 192.168.2.11:80 -s rr
 #ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.117 -g
 #ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.135 -g

測試:
 QQ圖片20161212213930.png-30.4kB
 QQ圖片20161212213938.png-40.2kB

以上lvs-dr模型簡單實現到此為止

總結

lvs特點是模型工作原理比較復雜,但是其服務配置卻非常簡單,lvs集群的配置難點主要集中在對模型的理解上,對網絡的配置及排錯上。
     這僅僅只是lvs的簡單實現后期會與其他集群服務配合進行更復雜的拓撲。

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

(0)
Net17_desperadoNet17_desperado
上一篇 2017-01-03 10:39
下一篇 2017-01-03 11:05

相關推薦

  • 隨筆—SVN倉庫轉換為Git倉庫

    假設需要轉換的SVN倉庫地址為:https://tmp/svn 1、使用git svn clone命令開始轉換 $ git svn clone https://tmp/svn -T trunk -b branches -t tags #git svn…

    Linux干貨 2016-07-04
  • Linux系統的基礎命令及事例講解

    Linux操作系統是系統運維領域里逐步強大,逐步受到關注的一款開源系統,它包含里大量的命令及程序,以下是我在這一周內學到的幾種命令及獲取幫助命令的方法: 1  tty    tty是查看終端設備的一個命令,輸入之后系統會提示如下:    /dev/pts/1   其中pts代表是在命令行接口下終端類…

    Linux干貨 2016-10-30
  • 三大家族輕松管理CentOS 7網絡屬性配置

    一、簡單介紹        在CentOS 7中對網絡管理還是有不少變化的,例如管理服務的命令變為systemctl,許多命令可以更改后直接生效,還有許多獨有的工具,本文以CentOS 6與CentOS 7對比進行講解,下面現總體介紹一下網絡屬性配置工具。    &nb…

    Linux干貨 2016-04-25
  • centos 6 配置bind

    BIND BIND(Berkeley Internet Name Daemon)是現今互聯網上最常使用的DNS服務器軟件,使用BIND作為服務器軟件的DNS服務器約占所有DNS服務器的九成[。BIND現在由互聯網系統協會(Internet Systems Consortium)負責開發與維護。 DNS是什么 DNS(Domain…

    Linux干貨 2016-12-19
  • http協議及httpd特性詳解

    前言 隨著互聯網的迅猛發展和網絡的普及,各類網站層出不窮,網站也成為企業宣傳和實力展現的主要途徑之一,說到網站就不得不說一下web服務了,現在比較流行的web服務還是當屬Apache即httpd。本文將詳解http協議及httpd的特性。 http協議詳解 http協議 http: Hyper Text Transfer Protocol 超文本傳輸協議 傳…

    Linux干貨 2015-04-13
  • 35個強大的UI設計教程

    下面是35個非常不錯的UI設計的的教程及效果圖,非常不錯哦。不但教你如何做一些特效,同樣教你如何做UI布局和界面設計。當然,他們風格迥異,也基本上都是Web頁面上的。都非常不錯。希望你喜歡。(點擊下面的圖片可以打開相關的教程) Old Paper Layout Professional Modern Web Layout Photography portfo…

    Linux干貨 2015-04-01
欧美性久久久久