校园二手网站建设目的意义,博客网站推荐,岚山网站建设报价,新电商网站一#xff0e;体系架构在Keepalived Nginx高可用负载均衡架构中#xff0c;keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址)#xff0c;当有设备发生故障时#xff0c;热备服务器可以瞬间将VIP自动切换过来#xff0c;实际运行中体验只有2秒钟…一体系架构在Keepalived Nginx高可用负载均衡架构中keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址)当有设备发生故障时热备服务器可以瞬间将VIP自动切换过来实际运行中体验只有2秒钟切换时间DNS服务可以负责前端VIP的负载均衡。nginx负责控制后端web服务器的负载均衡将客户端的请求按照一定的算法转发给后端Real Server处理而Real Server将响应直接返回给客户端。应用架构拓扑图二. 优点1.实现了可弹性化的架构在压力增大的时候可以临时添加web服务器添加到这个架构里面去;2.upstream具有负载均衡能力可以自动判断后端的机器并且自动踢出不能正常提供服务的机器3.相对于lvs而言正则分发和重定向更为灵活。而Keepalvied可保证单个nginx负载均衡器的有效性避免单点故障4.用nginx做负载均衡无需对后端的机器做任何改动。5.nginx部署在docker容器里即大量地节约开发、测试、部署的时间又可以在出现故障时通过镜像快速恢复业务。三. 系统环境两台负载机器安装centos7.2dockernginxkeepalived分别命名为NGINX_MASTERNGINX_BACKUP。后端web服务器可以是提供web服务的任何架构分别命名为WEB_1WEB_2。后端数据库机器可任意架构只要能提供数据库服务即可。服务器 操作系统 IP地址 安装软件NGINX_MASTER Centos 7.2 64位 10.141.1.32 dockernginxkeepalivedNGINX_BACKUP Centos 7.2 64位 10.141.9.2 dockernginxkeepalivedWEB_1 Centos 7.2 64位 10.141.3.73 dockerwebWEB_2 Centos 7.2 64位 10.141.26.218 dockerweb虚拟IP 10.141.1.33四. 搭建环境1. 主机准备全部主机执行命令setenforce 0 #关闭selinuxsed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/configsystemctl stop firewalld #关闭防火墙systemctl stop iptables #关闭iptables2. docker安装(全部主机执行命令)a. 在线安装参考: (https://docs.docker.com/install/linux/docker-ce/centos/#uninstall-old-versions)yum install dockerb. 离线二进制安装参考(https://www.jianshu.com/p/46b9a351f749)3. 准备web服务器a. 启动服务web1和web2执行这里使用python启动一个simplehttpservertouch 123.txt #在web1执行touch 456.txt #在web2执行python -m SimpleHTTPserver #web1,web2都执行b. 检查curl 10.141.3.73:8000 #返回123.txtcurl 10.141.26.218:8000 #返回456.txt4. 安装nginx进行负载均衡在master和backup执行a. 拉镜像docker pull nginxb. vim nginx.conf 增加 upstream和serveruser nginx;worker_processes 1;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; upstream linuxidc { server 10.141.3.73:8000; server 10.141.26.218:8000; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; proxy_pass http://linuxidc; } } sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;}c. 启动nginxdocker run -it -d -p 80:80 -v /${PWD}/nginx.conf:/etc/nginx/nginx.conf nginxd. 验证curl localhost #返回123.txt 或者返回456.txt5. 搭建keepalived进行热备(在master和backup执行)a. 安装keepalivedyum install -y keepalivedsystemctl start keepalivedsystemctl enable keepalivedb. 修改配置文件/etc/keepalived/keepalived.conf这里使用的是单播模式解决脑裂问题云主机(比如阿里云腾讯云。亚信云等)需要单独申请VIP并绑定主机否则不能访问VIP! Configuration File for keepalivedglobal_defs { notification_email { acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc } notification_email_from Alexandre.Cassenfirewall.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_script chk_port { #检测服务是否在运行。有很多方式比如进程用脚本检测等等 script /root/chk_server.sh #这里通过脚本监测 interval 2 #脚本执行间隔每2s检测一次 weight -10 #脚本结果导致的优先级变更检测失败(脚本返回非0)则优先级 -10 fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间) rise 1 #检测1次成功就算成功。但不修改优先级}vrrp_instance VI_1 { state MASTER #backup主机填写BACKUP unicast_src_ip 10.141.1.32 #写本机地址 unicast_peer { 10.141.9.2 #填写另外一台keepalived主机地址 } interface eth0 #网卡 virtual_router_id 58 #默认51可以换一个地址避免冲突主备id要一样 priority 100 #权重backup修改为95,检查失败后优先级变90低于95会将vip转移到slave advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.141.1.33 #虚拟ip } track_script { chk_port }}chk_server.sh脚本counter$(netstat -na|grep LISTEN|grep 80|wc -l)if [ ${counter} -eq 0 ]; then exit 0fic. 验证systemctl restart keepalivedip a查看master中绑定VIPbackup没有绑定master上执行systemctl stop keepalived可以发现VIP漂流到backup上curl 10.141.1.33 #返回结果为123.txt或者456.txt