負載均衡基礎實踐

  1. 使用NAT模型的TCP協議類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;php

    首先了解nat模型:用戶端,經過訪問172.16.0.146端口,調度器會將請求隨機轉換到,後端的連個服務器,本次採用輪迴調度的方式html

    圖片.png

  2. 在調度器上的,配置
    mysql

    a.建立集羣服務,並添加服務器web

     

  3.  [root@www ~]# ipvsadm -A -t 172.16.0.146:80 -s rr
    
     [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.100:80 -m
     [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.200:8000 -m

     b.開啓此主機的核心轉發功能sql

[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

4.服務器上的配置,192.168.100.100服務器上配置,安裝httpd,php,php-mysql,mysql-server數據庫

    a.爲此主機配置,phpmyadmin服務,並在資源目錄下作測試頁面index.html後端

<VirtualHost 192.168.100.100:80>
        ServerName www.admin.com
        DocumentRoot "/myweb/admin/"
        <Directory "/myweb/admin/">
                Options None
                AllowOverRide None
                Order deny,allow
                Allow from all
        </Directory>
</VirtualHost>

    b.給此服務器的數據庫建立新用戶並受權安全

mysql> grant all on *.* to 'wang'@'localhost' identifide by '111111';

    c.修改此主機的防火牆策略,讓此服務器能夠給調度器的請求作響應
bash

    d.給此主機作默認網關,網關爲192.168.100.1服務器

[root@localhost ~]# route add default gw 192.168.100.1

5.給192.168.100.200:8000服務器也作一樣的操做

6.在客戶端172.16.0.150作網關172.16.0.146,並對調度器進行訪問測試

[root@localhost ~]# for i in {1..10};do curl 172.16.0.146/index.html;done
192.168.100.200:8000
192.168.100.100:80
192.168.100.200:8000
192.168.100.100:80
192.168.100.200:8000
192.168.100.100:80
192.168.100.200:8000
192.168.100.100:80
192.168.100.200:8000
192.168.100.100:80

7。使用網頁訪問phpmyadmin,由於沒有創建持久鏈接,因此會一直保留在此頁面上,

圖片.png

可是在調度器上,使用ipvsadm -ln,能夠看到,後端real server被訪問的次數,每登陸一次則,會自動跳到另外一個服務器

圖片.png

8.當咱們創建持久鏈接時,則能夠訪問此程序,爲了顯示更直觀,倆臺服務器,數據庫不一樣

圖片.png

由於長鏈接是有時間限制的,因此咱們須要等一段時間,而後從新訪問,能夠看到數據庫發生變化,證實負載均衡成功

圖片.png

9.爲了使倆個服務器提供內容同樣,須要作數據庫共享;

使用samba,作目錄共享,共享/mydata目錄,並賦予mysql用戶寫權限,同時在文件系統上讓/mydata文件系統對mysql用戶有寫權限,將192.168.100.100服務器的數據庫複製到/mydata下,使用192.168.100.200,用mysql用戶掛載到/data/下

圖片.png

[root@bogon ~]# mount -t cifs -o username=mysql //192.168.100.100/discuz /data

更改192.168.100.200數據庫目錄,修改/etc/my.cnf的datadir=/data

重啓mysql服務,這樣不管使用哪臺服務器訪問,都是同一個數據庫


2.使用DR模型的FWM類型的lvs服務負載均衡一個php應用,如Discuz!論壇或者phpMyAdmin;

所謂FWM類型,是利用防火牆標記進行,而後利用此標記填加集羣服務

所謂DR模型:是對報文的MAC地址進行從新封裝,轉發,但在整個過程當中ip地址,端口號不會發生變化

----DR原理簡析:

  1. 客戶端向調度器VIP發送請求報文

  2. 調度器會對請求報文從新封裝,使得源MAC地址變爲DIP,目標MAC地址爲後端RIP

  3. 後端的real server,將請求報文解封裝後,對資源進行處理

  4. 後端real server在發送響應報文時,再也不經過調度器,發送給客戶端,而是利用本身的環回接口爲VIP的地址進行相應給客戶端

    a.首先觀察其拓撲圖

    圖片.png

    b.對調度器進行設置:

        1.設置DIP與VIP,DIP和VIP在同一個網卡上,且VIP應該設在標籤端口上(保證DIP和VIP是同一個MAC地址)

 

        2.作防火牆標記,在mangle表上標記

        3.使用該標記作集羣服務

        4.給集羣添加服務器

圖片.png

[root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.0.150 -p tcp --dport 80 -j MARK --set-mark 2
localhost ~]# ipvsadm -A -f 2 -s rr 
[root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.151 -g -w 1
[root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.152 -g -w 1
[root@localhost ~]#

    c.對real server的配置:

        1.配置相應的RIP

        2.在環回接口上配置VIP,

        3.配置http,php,mysql服務

        4.設置合理的安全策略

        5.修改內核參數

        6.給lo接口作特定路由


   13  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  //只響應目的IP地址爲接收網卡上的本地地址的ARP請求
   14  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
   15  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
   16  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  //忽略IP數據包的源IP地址,選擇該發送網卡上最合適的本地地址做爲ARP請求的源IP地址
   17  route add -host 172.16.72.254 dev lo:0 //使響應報文從lo:0標籤接口向外封裝發送數據

          

d.一樣使用客戶端先進行測試訪問

圖片.png

e.創建長鏈接

f.使用網頁進行測試訪問

圖片.png

圖片.png

注意:使用網頁訪問時,應該使用VIP做爲目標IP

           添加集羣服務器時,後端real server 不能夠添加端口

相關文章
相關標籤/搜索