docker 搭建LVS NAT模式 安裝 nginx

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 模式搭建完成

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章