一、NGINX实现网站负载均衡,动静分离,高可用。
1.1静态页面使用nginx提供web解析服务;
1.2 动态页面使用tomcat提供web解析服务;
1.3 NGINX提供反向代理服务以及负载均衡服务;
1.4 Keepalive提供高可用;
拓扑图如下:
Nginx反向代理&&动静分离&&Haproxy高可用

环境准备:
Nginx反向代理&&动静分离&&Haproxy高可用
1、nginx1/nginx2 源码安装nginx,配置测试页面;
[[email protected] ~]#yum - y install gcc make pcre-devel //安装源码包工具
[[email protected] ~]#cd nginx-1.12.2 //进入源码安装目录
[[email protected] nginx-1.12.2 ]#./configure // 进入源码安装目录装包
[[email protected] ~] echo “nginx1/2“>> /usr/local/nginx/html/index.html //分别在nginx1与nginx2 web服务器下写静态测试页面;
[[email protected] ~]# /usr/local/nginx/sbin/nginx //启动nginx服务
[[email protected] ~]# curl 192.168.2.101 //主机nginx1下测试结果如下:
Nginx反向代理&&动静分离&&Haproxy高可用

[[email protected] ~]# curl 192.168.2.102 //主机nginx2下测试结果如下:
Nginx反向代理&&动静分离&&Haproxy高可用
2、tomcat1/tomcat2 软件安装,配置测试页面;
[[email protected]~]# tar -xf apache-tomcat-8.0.30.tar.gz //解压软件包
[[email protected] ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat //将软件移动到/usr/local/tomcat目录
[[email protected] ~]# vim /usr/local/tomat/webapps/ROOT/test.jsp //写jsp动态测试界面

Tomcat1/2 Now time is: <%=new java.util.Date()%>

[[email protected] ~]# /usr/local/tomcat/bin/start.sh //启动tomcat 服务
[[email protected] ~]# curl 192.168.2.100:8080/test.jsp //在tomcat1主机测试界面,结果如下:

[[email protected] ~]# curl 192.168.2.200:8080/test.jsp //在tomcat2主机测试界面,结果如下:

3、proxy1/proxy2 安装nginx,并配置反向代理以及动静分离;
proxy1/proxy2源码安装nginx,步骤如1。
修改nginx配置文件:
[[email protected] ~]vim /usr/local/nginx/conf/nginx.conf
http {

upstream tomcat { //配置tomcat web服务集群
server 192.168.2.100:8080;
server 192.168.2.200:8080;
}
upstream nginx { //配置nginx web服务集群
server 192.168.2.101:80;
server 192.168.2.102:80;
}
server {
listen 80;
server_name localhost;
location ~* .jsp$ { //配置匹配动态页面.jsp
proxy_pass http://tomcat;
root webapps/ROOT; //动态页面根目录
}
location ~* .(html|jpg)$ { // 配置匹配静态页面html及其他格式
proxy_pass http://nginx;
root html; //静态页面根目录
}
}

}
[[email protected] ~]# /usr/local/nginx/sbin/nginx //配置完成之后启动NGINX服务。
完成之后在proxy1进行测试,结果如下,实现了负载均衡以及动静分离:
[[email protected] ~]# curl 192.168.2.5
nginx1
[[email protected] ~]# curl 192.168.2.5
nginx2
[[email protected] ~]# curl 192.168.2.5/test.jsp

Tomcat2 Now time is: Thu Aug 20 23:03:33 CST 2020
[[email protected] ~]# curl 192.168.2.5/test.jsp
Tomcat1 Now time is: Thu Aug 20 23:03:34 CST 2020
在proxy2部署与proxy1完全一样,测试结果也如上。

4、安装部署keepalive,实现proxy1、proxy2的高可用;
在proxy1、proxy2安装keepalived
[[email protected] ~]# yum -y install keepalived
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
vrrp_iptables
}
vrrp_instance VI_1 {
state MASTER //主服务器修改为MASTER
interface ens33 //配置网卡名
virtual_router_id 51 //主备VRID必须一致
priority 100 //服务器优先级,优先级高优先获取VIP,主服务器设置100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //设置VIP,谁是主服务器就在谁的主机上获得该VIP,可以通过// ip a s 查看到该ip
192.168.2.80
}
}
[[email protected] ~]# systemctl start keepalived //启动keepalived服务

[[email protected] ~]# yum -y install keepalived
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
vrrp_iptables
}
vrrp_instance VI_1 {
state BACKUP //备服务器修改为BACKUP
interface ens33 //配置网卡名
virtual_router_id 51 //主备VRID必须一致
priority 50 //服务器优先级,优先级高优先获取VIP,备服务器设置50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //设置VIP,谁是主服务器就在谁的主机上获得该VIP,可以通过// ip a s 查看到该ip
192.168.2.80
}
}
[[email protected]~]# systemctl start keepalived //启动keepalived服务

使用client客户端访问vip 192.168.2.80/index.html 192.168.2.80/test.jsp:
[[email protected] ~]# curl 192.168.2.80/index.html
nginx2
[[email protected] ~]# curl 192.168.2.80/index.html
nginx1
[[email protected] ~]# curl 192.168.2.80/test.jsp

Tomcat2 Now time is: Thu Aug 20 23:22:40 CST 2020
[[email protected] ~]# curl 192.168.2.80/test.jsp
Tomcat1 Now time is: Thu Aug 20 23:22:41 CST 2020
这时proxy1主机关机停止服务,client客户端访问vip 192.168.2.80/index.html 192.168.2.80/test.jsp, 还是可以正常访问,proxy2提供服务。 实现了高可用。

相关文章: