LVS負載均衡WordPress

LVS:

       LVS是四層協議的開源負載均衡器,工作在netfilter框架INPUT鏈中,它根據不同的算

       法將用戶的請求調度給后端服務器,它不受sockt套接字文件限制,性能比nginx七層   

        負載均衡器性能高很多。

    

        類型:

                lvs-nat:多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發

                lvs-dr:通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,

                          目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;

                lvs-tun:在請求原報文的首部再次封裝一個IP首部

                lvs-fullnat:修改請求報文的源和目標IP

           相關術語:

                    DS: Director Server,指的是前端負載均衡器節點。

                    RS:Real Server。后端提供服務的服務器。

                    VIP: 作為用戶請求的目標的IP地址

                    DIP :DS與RS之間相互通訊

                     RIP: 后端服務器IP

                     CIP: Client IP 客戶端IP


                     CIP <–> VIP == DIP <–> RIP 

LVS-NAT 類型的工作原理:

                   

  • 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP
  • PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
  • IPVS比對數據包請求的服務是否為集群服務,若是,根據調度算法修改數據包的目標IP地址為后端某一服務器IP,然后將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP
  • POSTROUTING鏈通過選路,將數據包發送給Real Server
  • Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP
  • Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP

環境部署:

         1 準備三臺主機    A    B    C    D

         2 主機A作為DS服務器,配置VIP:172.18.0.9 ,DIP為:192.168.10.254

         3 主機B C作為RS服務器 ,配置IP時網關指向DS服務器的192.168.10.254

            B主機IP:192.168.10.3/24 網關:192.168.10.254

            C主機IP:192.168.10.4/24 網關:192.168.10.254

            (備注:centos7用nmtui命令,centos6用setup命令)

          D主機IP:192.168.10.5(提供wordpress等)

D主機配置:(centos6)

    

            [root@node1 ~]# yum install -y nfs-utils rpcbind mysql-server nginx

                                  # service mysqld start
            [root@node1 ~]# mysql 
## 創建數據庫和授權用戶
            mysql> create database wpdb;
            mysql> grant all on wpdb.* to 
‘wpuser’@’192.168.10.%’ identified by ‘wppass’
            mysql> exit
            [root@node1 ~]# mkdir /data/
            [root@node1 ~]# cd /data/
            wget 
ftp://172.18.0.1/pub/Sources/sources/httpd/wordpress-4.3.1-zh_CN.zip
            [root@node1 data]# unzip wordpress-4.3.1-zh_CN.zip
            [root@node1 data]# chown -R nginx.nginx /data/wordpress
            [root@node1 data]# vim /etc/exports
            /data/wordpress 192.168.10.[34](rw)
            [root@node1 ~]# service nfs start
            [root@node1 ~]# showmount -e 172.18.99.7 
## 查看 nfs 共享目錄 

B  C兩臺主機配置:

   [root@centos7 ~]# yum install -y nginx php-fpm php-mysql nfs-utils
            [root@centos7 ~]# mkdir -p /data/wordpress
                                    #vim /etc/nginx/conf.d/wps/conf
            server {
                        listen  80 default_server;
                        server_name www.magedu.com;
                        root  /data/wordpress/;
                        index index.php index.html index.html;
            location / {

            location ~ \.php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME
                        /data/wordpress/$fastcgi_script_name;
                        include fastcgi_params;
            }
}

               root@centos7 nginx]# vim nginx.conf
                # default server 
##注釋或刪除主配置文件里的 default server 
                [root@centos7 conf.d]# nginx
                [root@centos7 conf.d]# systemctl start php-fpm
                [root@centos7 conf.d]# mount 172.18.99.7:/data/wordpress /data/wordpress
 
                

             

A主機配置:

  ipvsadm -A -t 172.18.0.9 -s rr

  ipvsadm -a -t 172.18.0.9:80 -r 192.168.10.3 -m -w 2

  ipvsadm -a -t 172.18.0.9:80 -r 192.168.10.4 -m -w 1

   sysctl -w net.ipv4.ip_forward=1(打開核心轉發功能)

LVS-dr模型工原理:

(1)每一個服務器都配有VIP

(2)Ditector轉發數據包給后端RealServer時,在原有數據包上再封裝一層RealServer的真是IP的mac到達。

(3)RS通過VIP回數據包時,數據必須從lo:0轉發給本機的ethX物理端口后,再由本機的ethX的物理端口轉發給客戶端

(4)RIP和VIP不一定在哦同一個網段(不在同一網段的可能性非常大,這樣可以起到隱藏后端RS的作用)

LVS-dr:

環境部署:

            1準備四臺主機 A B C D

            2 A主機是DS服務器:172.18.0.9

            3 B C 主機是RS服務器

               B主機IP:172.18.0.3    C主機IP:172.18.0.4

            4 D主機提供wordpress等  IP:172.18.0.5

配置D 主機:(centos6)

            [root@node1 ~]# yum install -y nfs-utils rpcbind mysql-server nginx

                                  # service mysqld start
            [root@node1 ~]# mysql
## 創建數據庫和授權用戶
            mysql> create database wpdb;
            mysql> grant all on wpdb.* to
‘wpuser’@’172.18.99.%’ identified by ‘wppass’
            mysql> exit
            [root@node1 ~]# mkdir /data/
            [root@node1 ~]# cd /data/
            wget
ftp://172.18.0.1/pub/Sources/sources/httpd/wordpress-4.3.1-zh_CN.zip
            [root@node1 data]# unzip wordpress-4.3.1-zh_CN.zip
            [root@node1 data]# chown -R nginx.nginx /data/wordpress
            [root@node1 data]# vim /etc/exports
            /data/wordpress 172.18.99.1[01](rw)
            [root@node1 ~]# service nfs start
            [root@node1 ~]# showmount -e 172.18.99.7
## 查看 nfs 共享目錄 

配置B主機:(centos7)
            

            [root@centos7 ~]# yum install -y nginx php-fpm php-mysql nfs-utils
            [root@centos7 ~]# mkdir -p /data/wordpress
                                    #vim /etc/nginx/conf.d/wps/conf
            server {
                        listen  80 default_server;
                        server_name www.magedu.com;
                        root  /data/wordpress/;
                        index index.php index.html index.html;
            location / {

            location ~ \.php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME
                        /data/wordpress/$fastcgi_script_name;
                        include fastcgi_params;
            }
}

               root@centos7 nginx]# vim nginx.conf
                # default server
##注釋或刪除主配置文件里的 default server
                [root@centos7 conf.d]# nginx
                [root@centos7 conf.d]# systemctl start php-fpm
                [root@centos7 conf.d]# mount 172.18.99.7:/data/wordpress /data/wordpress

                

                [root@centos7 ~]# vim dr.sh ## real-server 配置 vip
                #!/bin/bash
                 VIP=172.18.0.24
                case “$1” in
                    start)
                            echo “
配置 lvs Real Server 開始…”
                            ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
## 配置 VIP
                            route add -host $VIP dev lo:0 ## 添加主機路由
                            ## 限制響應和通告級別
                            echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
                            echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
                            echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
                            echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
                            ;;
                    stop)
                            echo “
正在關閉 lvs Real server”
                            ifconfig lo:0 down
                            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_announce
                            echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce
                            ;;
                    *)
                            echo “
用法: $0 {start|stop}”
                            exit 1
                   esac
            [root@centos7 ~]# bash dr.sh start
            配置 lvs Real Server 開始

配置C主機:(centos7)

                

                [root@centos7 ~]# yum install -y nginx php-fpm php-mysql nfs-utils
                [root@centos7 ~]# mkdir -p /data/wordpress
                [root@centos7 ~]# mount 172.18.99.7:/data/wordpress /data/wordpress

                                        #systemctl start php-fpm

                    #vim /etc/nginx/conf.d/wps/conf
            server {
                        listen  80 default_server;
                        server_name www.magedu.com;
                        root  /data/wordpress/;
                        index index.php index.html index.html;
            location / {

            location ~ \.php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME
                        /data/wordpress/$fastcgi_script_name;
                        include fastcgi_params;
            }
}

            
               root@centos7 nginx]# vim nginx.conf
                # default server 
##注釋或刪除主配置文件里的 default server         

                 [root@centos7 ~]# bash dr.sh start
                 配置 lvs Real Server 開始

配置A主機:

                [root@node2 ~]# yum install ipvsadm -y
                                      #ifconfig eth1 192.18.0.24 netmask 255.255.255.255 broadcast 172.18.0.24 up
                                      #ifconfig
                [root@node2 ~]# ipvsadm -A -t 172.18.0.24:80 -s rr
##新增一個集群服務
                [root@node2 ~]# ipvsadm -a -t 172.18.0.24:80 -r 172.18.99.10:80 -g
                ## 為集群添加 real-server
                [root@node2 ~]# ipvsadm -a -t 172.18.0.24:80 -r 172.18.99.11:80 -g
                [root@node2 ~]# ipvsadm -Ln
## 查看集群規則
備注:route add -host 172.18.0.24 dev lo:0(可以在倆臺RS主機上設置,目的是為了讓響應報文從lo出去,但這不是必須的。

 

                

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

(1)
m22shanyongguom22shanyongguo
上一篇 2017-05-17 22:48
下一篇 2017-05-18 13:24

相關推薦

  • SElinux

    SElinux 1.介紹: SELinux: Secure Enhanced Linux,是美國國家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)開發的Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發布,Linux內核2.6版本后集成在內核中 …

    Linux干貨 2016-09-21
  • nginx學習

    nginx    nginx的核心配置項:        Core functionality:核心配置,Glob配置段            daemon:是否開啟為守護進程        &nbs…

    2017-05-08
  • linux內核及centos系統啟動流程

    Linux組成 Linux: kernel+rootfs(根文件系統) kernel功能: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs:程序和glibc  庫:函數集合, function, 調用接口(頭文件負責描述)      過程調用:proce…

    Linux干貨 2016-09-10
  • 通過堡壘機代理SSH運行Ansible(譯)

    有一種常見的網絡安全模式是阻止私有網絡外部對應用服務器的所有連接(指除了業務數據外其它的連接,如后臺管理系統和內部業務系統。譯者注),然后使用 DMZ 區域中的 堡壘機 來選擇性的將到服務器的流量加入白名單。 我們有這樣的一個服務器池,只允許來自特定 IP 地址的 SSH 流量。這些服務器還由 Ansible…

    Linux干貨 2015-02-14
  • 網絡分層模型(OSI,TCP/IP)

    目前存在的兩種網絡分層模型:OSI模型和TCP/IP模型。 OSI模型一共分為七層 TCP/IP模型和OSI模型類似,但是只分為四層。 OSI模型 OSI的全程是Open Systems Interconncection,即開放系統互聯,它由ISO(International Organization for Standardization)制定。 OSI是…

    2017-11-27
欧美性久久久久