内容简介:是这样子的,我想让家中所有的应用服务都从nginx中出去,让nginx处于访问的最边缘地带,为了让nginx可靠性加强,所以nginx就得实现高可用,分别是下面两台机器要做nginx的集群当然上面的机器同时也要安装nginx,总的架构就是文章图片那个样子
是这样子的,我想让家中所有的应用服务都从nginx中出去,让nginx处于访问的最边缘地带,为了让nginx可靠性加强,所以nginx就得实现高可用,分别是下面两台机器要做nginx的集群
- 10.10.10.2
- 10.10.10.3
当然上面的机器同时也要安装nginx,总的架构就是文章图片那个样子
当主10.10.10.2挂了的时候可以自动切换到备10.10.10.3上的nginx,这样就实现了nginx的高可用
文中的后端应用服务可以有很多个不单单只有一个web网站
dns解析
我们从头开始
address=/www.bboysoul.com/10.10.10.10
之后用户就访问到了我们的vip,这个时候就是下一步安装keepalived的时候
安装配置keepalived
安装keepalived,记得两台机器都要安装哦
yum install keepalived
之后修改配置文件,同样两台机器都要 修改
vim /etc/keepalived/keepalived.conf
主的keepalived配置文件
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.10.10.10/24 } }
从的keepalived配置文件
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.10.10.10/24 } }
两个配置文件其实就是
priority 99
state BACKUP
两个地方不一样
之后重启服务,两台机器都要重启
systemctl restart keepalived
接着我们就是在这两台机器上安装nginx来实现反向代理,为了简单呢,我直接使用 docker 去安装nginx
安装nginx,下面的操作两台机器都要操作
首先clone我nginx的docker-compose配置文件
git clone https://github.com/bboysoulcn/awesome-dockercompose.git
cd awesome-dockercompose/nginx
启动nginx
docker-compose up -d
之后修改配置文件
vim /var/lib/docker/volumes/nginx_nginx-etc/_data/nginx.conf
user nginx; worker_processes 4; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; # bboysoul web upstream proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=bboysoul-tmp:100m inactive=7d max_size=1000g; upstream bboysoul-web { server 10.10.10.112:8080; } server { listen 80; server_name www.bboysoul.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://bboysoul-web/; proxy_cache bboysoul-tmp; proxy_cache_valid 200 206 304 301 302 10d; proxy_cache_key $uri; } } include /etc/nginx/conf.d/*.conf; }
之后重启容器
docker-compose restart
最后我们就要安装一个后端应用服务来做测试
安装后端应用服务
同样的,上面我们再nginx上配置了后端应用服务的地址是10.10.10.112:8080
所以我们要在10.10.10.112:8080上启动一个服务,为了方便我们直接使用docker来起一个服务
在10.10.10.112上
cd awesome-dockercompose/visualizer
docker-compose up -d
之后我们访问这个服务,直接在浏览器上输入 www.bboysoul.com
如果看到visualizer的界面就表示成功了
测试
接着我们来到10.10.10.2和10.10.10.3这两台机器上
首先执行
systemctl enable keepalived
让keepalived可以开机启动
并且都执行下面的命令来看nginx的日志
docker logs -f nginx
之后我们在浏览器上访问www.bboysoul.com
不出意外的话10.10.10.2上nginx是会有日志的,也就是说我们访问的是10.10.10.2上的nginx
之后我们模拟10.10.10.2宕机,直接在10.10.10.2上执行reboot
接着快速切换到浏览器上访问 www.bboysoul.com如果不出意外的话是可以访问的并且我们访问的是10.10.10.3上的nginx,当10.10.10.2重启完成之后你会发现流量又回到了10.10.10.2上去
欢迎关注Bboysoul的博客www.bboysoul.com
Have Fun
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 浪潮InCloud OpenStack:度量可用性“三维”,实现高可用云环境
- Nginx&Keepalived 实现高可用
- Memcache 使用 Mcrouter 实现高可用
- MHA实现MySQL的高可用
- SQL Server高可用镜像实现原理
- confd+etcd实现高可用自动发现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。