1. 程式人生 > >LVS--lvs-dr、lvs-nat配置(2)

LVS--lvs-dr、lvs-nat配置(2)

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)

            [[email protected] ~]# yum install -y nfs-utils rpcbind mysql-server nginx

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

B  C兩臺主機配置:

   [[email protected] ~]# yum install -y nginx php-fpm php-mysql nfs-utils
            [[email protected] ~]# 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;
            }
}

               [email protected] nginx]# vim nginx.conf
                # default server 
##註釋或刪除主配置檔案裡的 default server 
                [[email protected] conf.d]# nginx
                [[email protected] conf.d]# systemctl start php-fpm
                [[email protected] 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)

            [[email protected] ~]# yum install -y nfs-utils rpcbind mysql-server nginx

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

配置B主機:(centos7)
            

            [[email protected] ~]# yum install -y nginx php-fpm php-mysql nfs-utils
            [[email protected] ~]# 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;
            }
}

               [email protected] nginx]# vim nginx.conf
                # default server 
##註釋或刪除主配置檔案裡的 default server 
                [[email protected] conf.d]# nginx
                [[email protected] conf.d]# systemctl start php-fpm
                [[email protected] conf.d]# mount 172.18.99.7:/data/wordpress /data/wordpress
 
                

                [[email protected] ~]# 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
            [[email protected] ~]# bash dr.sh start
            配置 lvs Real Server 開始

配置C主機:(centos7)

                [[email protected] ~]# yum install -y nginx php-fpm php-mysql nfs-utils
                [[email protected] ~]# mkdir -p /data/wordpress
                [[email protected] ~]# 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;
            }
}

            
               [email protected] nginx]# vim nginx.conf
                # default server 
##註釋或刪除主配置檔案裡的 default server         

                 [[email protected] ~]# bash dr.sh start
                 配置 lvs Real Server 開始

配置A主機:

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

相關推薦

LVS--lvs-drlvs-nat配置2

LVS:        LVS是四層協議的開源負載均衡器,工作在netfilter框架INPUT鏈中,它根據不同的算        法將使用者的請求排程給後端伺服器,它不受sockt套接字檔案限制,效能比nginx七層            負載均衡器效能高很多。

轉載【項目管理和構建】——Maven下載安裝和配置

文檔 port 目標 軟件項目管理 strong mar temp mave work 原文鏈接: http://blog.csdn.net/jiuqiyuliang/article/details/41076215 在現實

springspringmvcmybatis整合配置註解

最近整合ssm框架費了不少功夫,所以,把詳細配置過程列出來,不足的地方望大俠們指正! 專案目錄: 1.web.xml檔案配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="h

CityEngine 免費試用申請下載與配置2018

CityEngine 是Esri公司的非常優秀的三維建模軟體,可以免費申請試用。 1、首先登陸申請網站: 2、選擇Free Trial,如果沒有賬號選擇Create a public account、 3、輸入申請賬號名和郵箱,在郵箱受到的郵件中,點選Activ

【專案管理和構建】——Maven下載安裝和配置

前言 在上篇博文【專案管理和構建】——Maven簡介(一)中我們瞭解到maven是一種全新的專案構建方式,讓我們的開發更加簡單,高效。Maven主要做的是兩件事: 統一開發規範與工具 統一管理jar包 這兩件事情他都做到了,而且還做了更多的事情。Mav

Team Foundation Server 2010 安裝部署與配置:建立 Team Project

在《Team Foundation Server 2010 安裝、部署與配置(四):設定》一文中,我們建立了一個叫做 Saturn-TeamProjectCollection 的 project collection,現在,我們在這個 project collection

7Dubbo-配置2

ted 進行 trie 2.0 clas http 程序 info @override 重試次數 通常配合timeout超時設置進行配置 <dubbo:reference interface="com.cr.service.UserService

Zabbix監控tomcat監控代理API操作server被動監控 2

zabbix監控tomcat、監控代理、api操作、server被動監控接上篇配置十一.Zabbix監控tomcat1.在server3上安裝java和tomcat2.配置tomcat采集腳本vim catalina.sh啟動tomcat3.添加zabbix監控jave程序zabbix本身不能監控到jave,

統一日誌ELK部署配置2——kafka

日誌收集前提:你服務器上已經安裝並配置了java運行環境; 一、zookeeper安裝1、從zookeeper官網:http://zookeeper.apache.org/ 下載;我這裏下載的是zookeeper-3.4.9.tar.gz;2、解壓到你安裝目錄:tar-zxvf zookeeper-3.4.9

docker版mysql的使用和配置2——docker版mysql的dockerfile

啟動方式 oracl 端口號 sum war rms total htm clas 既然目標是定制滿足自己需要的dockerfile,那麽就來看看mysql的dockerfile長什麽樣。 dockerfile選擇的是 https://github.com/mysql/my

Spring MVC 配置及應用 註解配置2

SpringMVC 註解應用 /login.do 具體的步驟 -->DispatcherServlet -->HandlerMapping -->LoginController  -->ViewReslover -->login.jsp (1)&

【.NET Core專案實戰-統一認證平臺】第四章 閘道器篇-資料庫儲存配置2

【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我們介紹瞭如何擴充套件Ocelot閘道器,並實現資料庫儲存,然後測試了閘道器的路由功能,一切都是那麼順利,但是有一個問題未解決,就是如果閘道器配置資訊發生變更時如何生效?以及我使用其他資料庫儲存如何快速實現?本篇就這兩個問題展開講解,

Git 遠端倉庫配置2

1.gitHub新增 SSH Key 本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的所以需要作如下設定. 第一步:建立SSH Key。Git客戶端工具進入使用者本地創庫主目錄下,通過命令( ssh - keygen -t rsa -C "815*****[email

Spring Security之旅————————————restful風格介面簡述,過濾器配置2

restful介面的完成度簡介 , 分為四級 利用三種方式攔截介面請求  Filter package com.sola.filter; import java.io.IOException; import javax.servlet.Filter; im

Spring 註解配置2——@Autowired

Spring 註解配置(2)——@Autowired 轉自- 部落格地址:http://www.cnblogs.com/caoyc/p/5626365.html  @Autowired 註釋,它可以對類成員變數、方法及建構函式進行標註,完成自動裝配的工作。 通過 @Aut

python人臉識別語音合成智慧簽到系統2

基於python+face_recognition+opencv+pyqt5+百度AI實現的人臉識別、語音播報、語音合成、模擬簽到系統(2) 人臉識別效果圖 功能介紹 檔案 ft2.py (對漢字實現轉碼opencv的puttxt不支援漢字需要轉碼)

oracle 10g 學習之客戶端安裝和配置2

概述 Oracle 資料庫是一種網路上的資料庫, 它在網路上支援多使用者, 支援伺服器/客戶機等部署(或配置) 伺服器與客戶機是軟體概念, 它們與計算機硬體不存在一一對應的關係. 即: 同一臺計算機既可以充當伺服器又可以充當客戶機, 或者, 一臺計算機只充當伺服器或只充當充當客戶機. Oracle 資料庫

挖掘頻繁模關聯和相關性2

頻繁項集挖掘方法 Apriori演算法 先驗性質:頻繁項集的所有非空子集也一定是頻繁的。 如果項集I不滿足最小支援度閾值min_sup,則I不是頻繁的,即P(I)<min_sup。如果把項A新增到項集 I 中,則結果項集(I⋃A) 不可

cc++ 基礎試題2

#include <stdio.h> int main() { char c; FILE *file; file = fopen("test.txt", "w+"); fprintf(file, "%c", 'a'); fprintf

實驗報告:1合理定義一個三角形類Triangle,成員屬性包括3條邊,能否構成三角形的標誌;成員方法包括構造方法修改3條邊計算面積。 (2)寫一測試類,測試自定義三角形類Triangle是否正

(1)合理定義一個三角形類Triangle,成員屬性包括3條邊,能否構成三角形的標誌;成員方法包括構造方法、修改3條邊、計算面積。(2)寫一測試類,測試自定義三角形類Triangle是否正確。class Triangle_D{ private double f_edge;