Nginx+Keepalived实现Web服务器高可用
Nginx架构的特点:
①高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker②热部署 :(1)平滑升级 (2)可以快速重载配置③高并发:可以同时响应更多的请求 事件 epoll模型 几万④响应快:尤其在处理静态文件上,响应速度很快 sendfile⑤低消耗:cpu和内存 1w个请求 内存2-3MB⑥分布式支持 :反向代理 七层负载均衡
官方网址:http://nginx.org/
部署两台代理服务器,实现如下效果:
利用keepalived实现两台服务器的高可用
配置VIP为192.168.4.80
修改对应的域名解析记录
步骤一:构建Nginx服务器
注意:两台Web服务器做相同的操作。
1)使用源码包安装nginx软件包
[root@web1 ~]# yum -y install gcc pcre-devel openssl-devel #安装依赖包
[root@web1 ~]# useradd -s /sbin/nologin nginx
[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web1 ~]# cd nginx-1.12.2
[root@web1 nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \ #指定安装路径
--user=nginx \ #指定用户
--group=nginx \ #指定组
--with-http_ssl_module #开启SSL加密功能
[root@web1 nginx-1.12.2]# make && make install #编译并安装
步骤二:安装Keepalived软件
注意:两台Web服务器做相同的操作。
[root@web1 ~]# yum install -y keepalived
步骤三:部署Keepalived服务
1)修改web1服务器Keepalived配置文件
[root@web1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
admin@tarena.com.cn //设置报警收件人邮箱
}
notification_email_from ka@localhost //设置发件人
smtp_server 127.0.0.1 //定义邮件服务器
smtp_connect_timeout 30
router_id web1 //设置路由ID号
vrrp_iptables //不添加任何防火墙规则
}
vrrp_instance VI_1 {
state MASTER //主服务器为MASTER(备服务器需要修改为BACKUP)
interface eth0 //定义网络接口
virtual_router_id 51 //主备服务器VRID号必须一致
priority 100 //服务器优先级,优先级高优先获取VIP
advert_int 1
authentication {
auth_type pass
auth_pass 1111 //主备服务器密码必须一致
}
virtual_ipaddress { //谁是主服务器谁获得该VIP(实验需要修改)
192.168.4.80
}
}
2)修改web2服务器Keepalived配置文件
[root@web2 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
admin@tarena.com.cn //设置报警收件人邮箱
}
notification_email_from ka@localhost //设置发件人
smtp_server 127.0.0.1 //定义邮件服务器
smtp_connect_timeout 30
router_id web2 //设置路由ID号
vrrp_iptables //不添加任何防火墙规则
}
vrrp_instance VI_1 {
state BACKUP //备服务器为BACKUP(实验需要修改)
interface eth0 //定义网络接口
virtual_router_id 51 //主辅VRID号必须一致
priority 50 //服务器优先级
advert_int 1
authentication {
auth_type pass
auth_pass 1111 //主辅服务器密码必须一致
}
virtual_ipaddress { //谁是主服务器谁配置VIP(实验需要修改)
192.168.4.80
}
}
启动服务
[root@web1 ~]# systemctl start keepalived
[root@web2 ~]# systemctl start keepalived
测试
1)登录两台Web服务器查看VIP信息
[root@web1 ~]# ip addr show eth0
[root@web2 ~]# ip addr show eth0