LVS 三種模式 簡介
lvs 就是一個調度器,用戶發送請求
流程 CIP <-->(外網IP)VIP == DIP(內網IP) <--> RIP(真正IP)
lvs-nat: 修改請求報文的目標IP,多目標IP的DNAT (原路來,原路返回)多目標,多端口
將原始數據包封裝並添加新的包頭(內容包括新的源地址及端口、目標地址及端口),從而實現將一個目標爲調度器的VIP地址的數據包封裝,通過隧道轉發給後端的真實服務器
LVS(TUN)模式要求真實服務器可以直接與外部網絡連接,真實服務器在收到請求數據包後直接給客戶端主機響應數據。
lvs-dr: 操縱封裝新的MAC地址
直接路由模式(DR模式)要求調度器與後端服務器必須在同一個局域網內,VIP地址需要在調度器與後端所有的服務器間共享,
因爲最終的真實服務器給客戶端迴應數據包時需要設置源IP爲VIP地址,目標IP爲客戶端IP,這樣客戶端訪問的是調度器的VIP地址,
迴應的源地址也依然是該VIP地址(真實服務器上的VIP),客戶端是感覺不到後端服務器存在的
LVS 算法簡介
http://zh.linuxvirtualserver.org/node/2903
安裝docker
https://www.cnblogs.com/xiufengchen/p/10387055.html
準備三臺Linux7容器 搭建nat 模式
獲取鏡像
docker pull centos:7
創建第一臺容器
docker run --privileged=true -dit -p 8081:8080 --name app1 centos:7 /usr/sbin/init
創建第二臺容器
docker run --privileged=true -dit -p 8082:8080 --name app2 centos:7 /usr/sbin/init
在創建第三個容器
docker run --privileged=true -dit --name master centos:7 /usr/sbin/init
-p 映射宿主機端口
部署第一臺容器
docker exec -it app1 /bin/bash
安裝工具
yum -y install net-tools vi wget
安裝ipvsadm
yum -y install ipvsadm
下載新的CentOS-Base.repo 到/etc/yum.repos.d/ #centos 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新yum緩存
yum makecache
下載nginx 依賴
yum install epel-release -y
下載nginx
yum install nginx -y
systemctl start nginx
systemctl enable nginx
配置nginx.conf
find / -name 'nginx.conf'
vi /etc/nginx/nginx.conf
把這一段內容對應的修改 用戶,端口,路徑
修改前
---------------------------------------------------------------------------
user nginx; 修改用戶,不修改啓動nginx 報403錯誤,因爲不是用一個用戶
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
------------------------------------------------------------------------
修改後
user root;
server {
listen 8080;
server_name localhost;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /root/html;
index index.html;
}
-----------------------------------------------------------------------
cd
mkdir html
cd html/
vi index.html
service1 1234567 ;
systemctl restart nginx
訪問宿主機 ip :8081
成功顯示頁面
service1 1234567 ;
第一臺容器搭建完成
開始搭建第二臺容器 與 第一臺容器相同
vi index.html
service2 7654321;
分別進入到這兩個容器中,輸入ifconfig 命令,查看他們的ip地址
docker exec -it app1 /bin/bash
設置爲 RS1: 172.17.0.2
docker exec -it app2 /bin/bash
設置爲 RS1: 172.17.0.3
在第三臺容器上配置
docker exec -it master /bin/bash
yum -y install net-tools vi wget
yum -y install ipvsadm
ifconfig
docker 容器 ip 172.17.0.4
設置爲 VIP: 172.17.0.4
ipvsadm -C
ipvsadm -A -t 172.17.0.4:80 -s wrr
ipvsadm -a -t 172.17.0.4:80 -r 121.36.104.222:8082 -m -w 1
ipvsadm -a -t 172.17.0.4:80 -r 121.36.104.222:8081 -m -w 1
註釋
ipvsadm -A -t VIP:80 -s wrr
ipvsadm -a -t VIP:80 -r 宿主機IP:8081 -m -w 1
測試
curl 172.17.0.4:80
Nat 模式搭建完成