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-dr、lvs-nat配置(2)
LVS: LVS是四層協議的開源負載均衡器,工作在netfilter框架INPUT鏈中,它根據不同的算 法將使用者的請求排程給後端伺服器,它不受sockt套接字檔案限制,效能比nginx七層 負載均衡器效能高很多。
(轉載)【項目管理和構建】——Maven下載、安裝和配置(一)
文檔 port 目標 軟件項目管理 strong mar temp mave work 原文鏈接: http://blog.csdn.net/jiuqiyuliang/article/details/41076215 在現實
spring、springmvc、mybatis整合配置(註解)
最近整合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
7、Dubbo-配置(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) 不可
c、c++ 基礎試題(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;