Ngxin作为一个强大的开源软件是可以先做为高可用集群服务的,这篇博文就介绍一下nginx+Keepalived是如何实现高性能+高可用集群服务的
创新互联-专业网站定制、快速模板网站建设、高性价比大兴网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式大兴网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖大兴地区。费用合理售后完善,10多年实体公司更值得信赖。
环境介绍:
硬件: 4台虚拟服务器
系统:CentOS 7.3
软件:Keepalived、Apache、Nginx
IP及主机名
Master
主机名:shiyan1
IP地址:172.18.17.31
Backup
主机名:shiyan2
IP地址:172.18.17.32
Httpd1
主机名:shiyan3
IP地址:172.18.17.33
Httpd2
主机名:shiyan4
IP地址:172.18.17.34
四台服务器初始化配置(四台服务器相同的配置)
关闭防火墙
[root@shiyan~ ]# systemctl disable firewalld
[root@shiyan~ ]# systemctl stop firewalld
[root@shiyan~ ]# iptables –F
关闭Selinux
[root@shiyan~ ]# vim /etc/selinux/config
SELINUX=disabled
#保存重启系统生效
安装软件
Master/Backup
[root@shiyan~ ]# yum install keepalived httpd nginx #(Nginx需要单独配置EPEL源)
Httpd1/Httpd2
[root@shiyan~ ]# yum install httpd
Httpd1配置
[root@shiyan3 ~ ]# mkdir -p /app/apache/html/
[root@shiyan3 ~ ]# chown -R apache.apache /app/apache/html/
[root@shiyan3 ~ ]# echo "Apache Server 1" > /app/apache/html/index.html
[root@shiyan3 ~ ]# vim /etc/httpd/conf/httpd.conf
#此处是更改httpd.conf中的内容,并非添加内容
DocumentRoot "/app/apache/html"
#更改为自定义的路径
#
# Relax access to content within /var/www.
#
#更改为自定义的路径
AllowOverride None
# Allow open access:
Require all granted
# Further relax access to the default document root:
#更改为自定义的路径.
[root@shiyan3 ~ ]# systemctl restart httpd
#测试网站是否正常运行
[root@yum ~ ]# curl http://172.18.17.33
Apache Server 1 #测试成功Httpd2配置
[root@shiyan4 ~ ]# mkdir -p /app/apache/html/
[root@shiyan4 ~ ]# chown -R apache.apache /app/apache/html/
[root@shiyan4 ~ ]# echo "Apache Server 2" > /app/apache/html/index.html
[root@shiyan4 ~ ]# vim /etc/httpd/conf/httpd.conf
#此处是更改httpd.conf中的内容,并非添加内容
DocumentRoot "/app/apache/html"
#更改为自定义的路径
#
# Relax access to content within /var/www.
#
#更改为自定义的路径
AllowOverride None
# Allow open access:
Require all granted
# Further relax access to the default document root:
#更改为自定义的路径.
[root@shiyan4 ~ ]# systemctl restart httpd
#测试网站是否正常运行
[root@yum ~ ]# curl http://172.18.17.34
Apache Server 2 #测试成功Master配置
配置Sorry-Server
[root@shiyan1 ~ ]# mkdir -p /app/apache/html/
[root@shiyan1 ~ ]# chown -R apache.apache /app/apache/html/
[root@shiyan1 ~ ]# echo "Sorry Server 1
" > /app/apache/html/index.html
[root@shiyan1 ~ ]# vim /etc/httpd/conf/httpd.conf
#此处是更改httpd.conf中的内容,并非添加内容
Listen 8080
DocumentRoot "/app/apache/html"
#更改为自定义的路径
#
# Relax access to content within /var/www.
#
#更改为自定义的路径
AllowOverride None
# Allow open access:
Require all granted
# Further relax access to the default document root:
#更改为自定义的路径.
[root@shiyan1 ~ ]# systemctl restart http
#测试网站是否正常运行
[root@yum ~ ]# curl http://172.18.17.31:8080
Sorry Server 1
#测试成功
配置Keepalived
[root@shiyan1 ~ ]# cp /etc/keepalived/keepalived.conf{,.bak} #备份文件
[root@shiyan1 ~ ]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root #定义收邮件的用户
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.18.17.31 #定义邮件地址
smtp_connect_timeout 30
router_id node1 #定义节点名称
}
vrrp_instance VI_1 {
state MASTER #定义节点为主节点模式
interface ens33 #定义使用ens33为VIP网卡
virtual_router_id 51 #定义节点编号
priority 150 #定义优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.17.30 #定义VIP
}
}
~ 配置Nginx服务
[root@shiyan1 ~ ]# vim /etc/nginx/nginx.conf
#添加nginx集群
upstream websrvs {
server 172.18.17.33:80;
server 172.18.17.34:80;
server 127.0.0.1:8080 backup;
}
#server 部分的内容需要全部注释掉
[root@shiyan1 ~ ]# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
root html;
proxy_pass http://websrvs;
index index.html index.htm;
}
}
[root@shiyan1 ~ ]# systemctl restart nginx
[root@shiyan1 ~ ]# systemctl restart keepalived
[root@shiyan1 ~ ]# systemctl restart httpdBackup配置
配置Sorry-Server
[root@shiyan2 ~ ]# mkdir -p /app/apache/html/
[root@shiyan2 ~ ]# chown -R apache.apache /app/apache/html/
[root@shiyan2 ~ ]# echo "Sorry Server 2
" > /app/apache/html/index.html
[root@shiyan2 ~ ]# vim /etc/httpd/conf/httpd.conf
#此处是更改httpd.conf中的内容,并非添加内容
Listen 8080
DocumentRoot "/app/apache/html"
#更改为自定义的路径
#
# Relax access to content within /var/www.
#
#更改为自定义的路径
AllowOverride None
# Allow open access:
Require all granted
# Further relax access to the default document root:
#更改为自定义的路径.
[root@shiyan2 ~ ]# systemctl restart http
#测试网站是否正常运行
[root@yum ~ ]# curl http://172.18.17.31:8080
Sorry Server 2
#测试成功
配置Keepalived
[root@shiyan2 ~ ]# cp /etc/keepalived/keepalived.conf{,.bak} #备份文件
[root@shiyan2 ~ ]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root #定义收邮件的用户
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.18.17.31 #定义邮件地址
smtp_connect_timeout 30
router_id node1 #定义节点名称
}
vrrp_instance VI_1 {
state MASTER #定义节点为主节点模式
interface ens33 #定义使用ens33为VIP网卡
virtual_router_id 51 #定义节点编号
priority 150 #定义优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.17.30 #定义VIP
}
}
~ 配置Nginx服务
[root@shiyan2 ~ ]# vim /etc/nginx/nginx.conf
#添加nginx集群
upstream websrvs {
server 172.18.17.33:80;
server 172.18.17.34:80;
server 127.0.0.1:8080 backup;
}
#server 部分的内容需要全部注释掉
[root@shiyan2 ~ ]# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
root html;
proxy_pass http://websrvs;
index index.html index.htm;
}
}
[root@shiyan2 ~ ]# systemctl restart keepalived
[root@shiyan2 ~ ]# systemctl restart nginx
[root@shiyan2 ~ ]# systemctl restart httpd测试环境
#默认使用rr算法依次轮询访问后端httpd服务器
[root@yum ~ ]# curl http://172.18.17.30
Apache Server 1
[root@yum ~ ]# curl http://172.18.17.30
Apache Server 2
#关闭后端http1服务,这样只能访问httpd2的服务
[root@yum ~ ]# curl http://172.18.17.30
Apache Server 2
[root@yum ~ ]# curl http://172.18.17.30
Apache Server 2
#关闭两台后端主机的httpd服务,这样因为没有后端服务器所以Master的sorry-server提供服务
[root@yum ~ ]# curl http://172.18.17.30
Sorry Server 1
#关闭Master测试
[root@yum ~ ]# curl http://172.18.17.30
Sorry Server 2
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:Keepaliev+Nginx+http-创新互联
文章来源:http://www.cdkjz.cn/article/pishp.html