Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Nginx reverse proxies docker and synchronizes docker with nfs

2025-01-15 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/03 Report--

nginx1 192.168.1.10

nginx2 192.168.1.20

docker01 192.168.1.30

docker02 192.168.1.40

nfs master 192.168.1.50

192.168.1.60

nfs1 download install nfs:[root@nfs01 ~]# yum -y install nfs-utils[root@nfs01 ~]# cd /datafare/[root@nfs01 datafare]# vim /etc/exports Add: /datafare *(rw,sync,no_root_square)

Start:

[root@nfs01 datashare]# systemctl start rpcbind[root@nfs01 datashare]# systemctl enable rpcbind[root@nfs01 datashare]# systemctl start nfs-server[root@nfs01 datashare]# systemctl enable nfs-serverdocker01

Import Mirror:

[root@docker01 ~]# docker load

< nginx.tar [root@docker01 ~]# mkdir /wwwroot[root@docker01 ~]# mkdir /docker[root@docker01 ~]# docker run -itd --name test nginx:latest[root@docker01 ~]# docker cp test:/etc/nginx /docker/[root@docker01 ~]# docker cp test:/usr/share/nginx/html /wwwroot/[root@docker01 ~]# showmount -e 192.168.1.50Export list for 192.168.1.50:/datashare *[root@docker01 ~]# mount 192.168.1.50:/datashare /wwwroot/html/[root@docker01 ~]# docker run -itd --name nginx-web1 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html -p 80:80 nginx:latestdocker02上操作: 导入镜像: [root@docker02 ~]# docker load < nginx.tar[root@docker02 ~]# mkdir /wwwroot[root@docker02 ~]# mkdir /docker[root@docker02 ~]# docker run -itd --name test nginx:latest [root@docker02 ~]# docker cp test:/etc/nginx /docker/[root@docker02 ~]# docker cp test:/usr/share/nginx/html /wwwroot/[root@docker02 ~]# showmount -e 192.168.1.50Export list for 192.168.1.50:/datashare *[root@docker02 ~]# mount 192.168.1.50:/datashare /wwwroot/html/[root@docker02 ~]# docker run -itd --name nginx-web2 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html -p 80:80 nginx:latest 更改docker01网页界面,docker02上验证同步:[root@docker01 ~]# cd /wwwroot/html/[root@docker01 html]# cat index.html skx nginx[root@docker01 html]# curl 127.0.0.1skx nginx[root@docker02 ~]# curl 127.0.0.1skx nginx验证成功再nginx01和nginx02上做漂移地址:nginx01:[root@nginx01 ~]# yum -y install pcre-devel openssl-devel 导入镜像: [root@nginx01 ~]# tar zxf ngx_cache_purge-2.3.tar.gz [root@nginx01 ~]# unzip nginx-sticky-module.zip [root@nginx01 ~]# tar zxf nginx-1.14.0.tar.gz [root@nginx01 ~]# cd nginx-1.14.0/[root@nginx01 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx1.14 --user=www --group=www --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre --with-http_flv_module --add-module=../nginx-sticky-module --add-module=../ngx_cache_purge-2.3 && make && make install[root@nginx01 nginx-1.14.0]# ln -s /usr/local/nginx1.14/sbin/nginx /usr/local/sbin/[root@nginx01 nginx-1.14.0]# useradd www -s /sbin/nologin -M[root@nginx01 nginx-1.14.0]# mkdir -p /var/tmp/nginx/client[root@nginx01 nginx-1.14.0]# nginx[root@nginx01 nginx-1.14.0]# netstat -anpt | grep 80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7711/nginx: master nginx02: [root@nginx02 ~]# tar zxf ngx_cache_purge-2.3.tar.gz [root@nginx02 ~]# unzip nginx-sticky-module.zip [root@nginx02 ~]# tar zxf nginx-1.14.0.tar.gz [root@nginx02 ~]# yum -y install pcre-devel openssl-devel[root@nginx02 ~]# cd nginx-1.14.0/[root@nginx02 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx1.14 --user=www --group=www --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre --with-http_flv_module --add-module=../nginx-sticky-module --add-module=../ngx_cache_purge-2.3 && make && make install[root@nginx02 nginx-1.14.0]# ln -s /usr/local/nginx1.14/sbin/nginx /usr/local/sbin/[root@nginx02 nginx-1.14.0]# useradd www -s /sbin/nologin -M[root@nginx02 nginx-1.14.0]# mkdir -p /var/tmp/nginx/client[root@nginx02 nginx-1.14.0]# nginx[root@nginx02 nginx-1.14.0]# netstat -anpt | grep 80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7355/nginx: master nginx01安装keepalived:

[root@nginx01 ~]# tar -zxvf keepalived-1.2.13.tar.gz [root@nginx01 ~]# cd keepalived-1.2.13/[root@nginx01 keepalived-1.2.13]# ./ configure --prefix=/[root@nginx01 keepalived-1.2.13]# make && make install[root@nginx01 keepalived-1.2.13]# vim /etc/keepalived/keepalived.conf 3 line: global_defs { router_id LVS_DEVEL_1 } Line 14: interface ens3322 line: virtual_ipaddress { 192.168.1.254 } nginx02 Install keepalived:

[root@nginx01 ~]# tar -zxvf keepalived-1.2.13.tar.gz

[root@nginx01 ~]# cd keepalived-1.2.13/

[root@nginx01 keepalived-1.2.13]# ./ configure --prefix=/

[root@nginx01 keepalived-1.2.13]# make && make install

[root@nginx02 keepalived-1.2.13]# vim /etc/keepalived/keepalived.conf

3 lines:

global_defs {

router_id LVS_DEVEL_2

}

Line 14:

​ interface ens33

Line 22:

virtual_ipaddress {

192.168.1.254

}

docker01 and docker02 Start Services:

[root@nginx02 keepalived-1.2.13]# /etc/init.d/keepalived start

Reloading systemd: [ OK ]

Starting keepalived (via systemctl): [ OK ]

Visit: ! [](https://s1.51cto.com/images/blog/201912/21/f4595e87674a32c6cb6c25a4f631861a.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk =)###docker01 and docker02 do reverse proxy: ###docker01:

[root@nginx01 ~]# vim /usr/local/nginx1.14/conf/nginx.conf

Line 21 Add:

upstream backend {

​ ip_hash;

​ server 192.168.1.30:80 weight=1 max_fails=2 fail_timeout=10s;

​ server 192.168.1.40:80 weight=1 max_fails=2 fail_timeout=10s;

​ }

Line 49 Add:

proxy_pass http://backend;

Restart service:

[root@nginx01 ~]# nginx -t

nginx: the configuration file /usr/local/nginx1.14/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx1.14/conf/nginx.conf test is successful

[root@nginx01 ~]# nginx -s reload

#### docker02:

33 lines added:

upstream backend {

ip_hash;

server 192.168.1.30:80 weight=1 max_fails=2 fail_timeout=10s;

server 192.168.1.40:80 weight=1 max_fails=2 fail_timeout=10s;

}

50 lines added:

proxy_pass http://backend;

Restart service:

[root@nginx01 ~]# nginx -t

nginx: the configuration file /usr/local/nginx1.14/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx1.14/conf/nginx.conf test is successful

[root@nginx01 ~]# nginx -s reload

####Rsync+Inotify### nfs01:! [](https://s1.51cto.com/images/blog/201912/21/853d21d253a7f2ca29e7b1c5bd0a25bc.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

[root@nfs01 ~]# tar zxf inotify-tools-3.14.tar.gz

[root@nfs01 ~]# cd inotify-tools-3.14/

[root@nfs01 inotify-tools-3.14]# ./ configure && make && make install

[root@nfs01 inotify-tools-3.14]# vim /etc/rsyncd.conf

Add the following to the last line:

gid = nobody

use chroot = yes

address = 192.168.1.50

port 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.1.0/24

[wwwroot]

path = /datashare

read only = no

dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2

####Scripting real-time synchronization:

[root@nfs01 ~]# vim /inotify_sync.sh

#!/ bin/bash

inotify_cmd="inotifywait -mrq -e modify,create,attrib,move,delete /datashare"

rsync_cmd="rsync -azH /datashare/* 192.168.2.40::wwwroot"

$inotify_cmd | while read DIRECTORY EVENT FILE

do

​ $rsync_cmd

done

[root@nfs01 ~]# chmod +x /inotify_sync.sh

Startup Services:

[root@nfs01 ~]# rsync --daemon

#### nfs02:

[root@nfs02 ~]# yum -y install rsync

[root@nfs02 ~]# vim /etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = yes

address = 192.168.1.60

port 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.1.0/24

[wwwroot]

path = /datashare

read only = no

dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2

[root@nfs02 ~]# mkdir /datashare

#### nfs01:

[root@nfs01 ~]# sh /inotify_sync.sh

nfs02:

####Verification:

[root@nfs02 ~]# cat /datashare/

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report