平顶山城市住房城乡建筑网站,做电锯电音的网站,什么推广方式能快速引流,怎么安装wordpress主题tomcat高可用和nginx高可用 小白教程#xff0c;一看就会#xff0c;一做就成。 1.什么是高可用#xff1f;
高可用HA#xff08;High Availability#xff09;是分布式系统架构设计中必须考虑的因素之一#xff0c;它通常是指#xff0c;通过设计减少系统不能提供服务…tomcat高可用和nginx高可用 小白教程一看就会一做就成。 1.什么是高可用
高可用HAHigh Availability是分布式系统架构设计中必须考虑的因素之一它通常是指通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务那么这个可用性则是百分之百但是天有不测风云。所以我们只能尽可能的去减少服务的故障。
2.解决的问题
在生产环境上很多时候是以Nginx做反向代理对外提供服务但是一天Nginx难免遇见故障如服务器宕机。当Nginx宕机那么所有对外提供的接口都将导致无法访问。
虽然我们无法保证服务器百分之百可用但是也得想办法避免这种悲剧今天我们使用keepalived来实现Nginx的高可用。
3.双机热备方案
这种方案是国内企业中最为普遍的一种高可用方案双机热备其实就是指一台服务器在提供服务另一台为某服务的备用状态当一台服务器不可用另外一台就会顶替上去。
4.keepalived是什么
Keepalived软件起初是专为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议功能。因此Keepalived除了能够管理LVS软件外还可以作为其他服务例如Nginx、Haproxy、MySQL等的高可用解决方案软件
5.故障转移机制
Keepalived高可用服务之间的故障切换转移是通过VRRP 来实现的。在 Keepalived服务正常工作时主 Master节点会不断地向备节点发送多播的方式心跳消息用以告诉备Backup节点自己还活着当主 Master节点发生故障时就无法发送心跳消息备节点也就因此无法继续检测到来自主 Master节点的心跳了于是调用自身的接管程序接管主Master节点的 IP资源及服务。而当主 Master节点恢复时备Backup节点又会释放主节点故障时自身接管的IP资源及服务恢复到原来的备用角色。
6.部署环境
以下都是centos7.8的系统
143.1.26.211Tomcat服务3个Tomcat应用7、8、9版本大于等于10版本后jdk就要用11的了8的就不行了
143.1.26.212nginx
143.1.26.213nginx
143.1.26.214是keepalived的虚拟ip不是真实的服务器
7.达到什么目的
实现Tomcat服务的高可用一个服务挂了跳转到另外的服务用的是nginx做的代理与nginx的高可用这个nginx挂了自动转移到另外的nginx
8.部署tomcat
8-1.下载Tomcat包
https://tomcat.apache.org/
我这里下载了7,8,9三个版本 8-2.部署Tomcat需要先安装jdk有写部署jdk的文章
我是在服务器上创建了3个目录存放3个Tomcat
/data/tomcat7/data/tomcat8/data/tomcat9
把对应版本的包放到对应目录里然后解压(以7版本为例)
cd /data/tomcat7/
tar -zxvf apache-tomcat-7.0.90.tar.gz
修改端口文件以7版本为例
vim /data/tomcat7/apache-tomcat-7.0.90/conf/server.xml
修改地方如下修改后的端口7的是8001,8081,7001。8的是8002,8082,7002。9的是8003,8083,7003 启动以7版本为例
bash /data/tomcat7/apache-tomcat-7.0.90/bin/startup.sh 关闭以7版本为例
bash /data/tomcat7/apache-tomcat-7.0.90/bin/shutdown.sh
查看端口
netstat -ptln 9.部署nginxnginx-1.16.1为例
9-1.下载nginx-1.16.1包并上传到服务器需要包的滴滴我可以私发
#先安装编译安装的环境与killall工具
yum -y install gcc gcc-c automake pcre pcre-devel zlib zlib-devel openssl openssl-devel psmisc
#我创建了/data放nginx包
mkdir /data
#解压包
tar -zxvf nginx-1.16.1.tar.gz
#配置环境
cd nginx-1.16.1/
./configure --prefix/usr/local/nginx --with-http_realip_module --with-http_ssl_module
#编译安装
make make install
#添加启动关闭重载nginx的脚本
vim /usr/lib/systemd/system/nginx.service
#内容如下
[Unit]
Descriptionnginx
Afternetwork.target[Service]
Typeforking
ExecStart/usr/local/nginx/sbin/nginx
ExecReload/usr/local/nginx/sbin/nginx -s reload
ExecStop/usr/local/nginx/sbin/nginx -s quit
PrivateTmptrue[Install]
WantedBymulti-user.target
#到此结束
#添加权限
chmod x /usr/lib/systemd/system/nginx.service
systemctl start nginx.service #启动
systemctl stop nginx.service #关闭
systemctl restart nginx.service #重启也可以当启动用
systemctl reload nginx.service #重载配置
/usr/local/nginx/sbin/nginx -t #查看配置文件是否有吴
9-2.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
#内容如下upstream tomcat{server 143.1.26.211:8081 weight1;server 143.1.26.211:8082 weight2;server 143.1.26.211:8083 weight3;
}#weight代表对应的服务的权重权重越高值越大服务被访问的优先级越高 proxy_pass http://tomcat;
#这里的tomcat是上图upstream tomcat里的什么都行只要两处对应就好下图的root html;和index index.html index.htm;是我注释掉了 9-3.启动
systemctl restart nginx.service
9-4.扩展小知识
如果应用不只是ip和端口后面加上后缀才能访问到咱的项目例如加了/defaultroot/login2.jsp
那upstream tomcat这里配置的还是不变的proxy_pass 这里变了
proxy_pass http://tomcat/defaultroot/login2.jsp; 9-5.访问
http://nginx的ip #这里我没加端口因为我的nginx端口是默认的80
9-6.另一台nginx服务器也是相同的安装部署与配置这里忽略了
10.做nginx的高可用两台都安装keepalived212是主213是从
10-1.安装keepalived并配置keepalived的配置只有priority不一样
yum -y install keepalived
10-2.添加检测脚本两台nginx都一样
#创建一个文件夹
mkdir /usr/local/nginx/src
#添加nginx_check.sh脚本
vim /usr/local/nginx/src/nginx_check.sh
#!/bin/bash
#检测nginx是否启动了
Yps -C nginx --no-header |wc -l
if [ $Y -eq 0 ];then #如果nginx没有启动就启动nginx systemctl start nginx #重启nginxif [ ps -C nginx --no-header |wc -l -eq 0 ];then #nginx重启失败则停掉keepalived服务进行VIP转移killall keepalived fi
fi#给脚本加权限
chmod x /usr/local/nginx/src/nginx_check.sh 10-3.修改143.1.26.212的keepalived配置文件
#先备份配置文件
cd /etc/keepalived/
cp -a keepalived.conf keepalived.conf_bak
vim /etc/keepalived/keepalived.conf! Configuration File for keepalived#检测脚本
vrrp_script chk_http_port {script /usr/local/nginx/src/nginx_check.sh #心跳执行的脚本检测nginx是否启动interval 2 #检测脚本执行的间隔单位是秒weight 2 #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {state MASTER # 指定keepalived的角色MASTER为主BACKUP为备interface ens192 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ip add查看你具体的网卡virtual_router_id 77 # 虚拟路由编号主从要一致priority 100 # 优先级数值越大获取处理请求的优先级越高advert_int 1 # 检查间隔默认为1s(vrrp组播周期秒数)#授权访问authentication {auth_type PASS #设置验证类型和密码MASTER和BACKUP必须使用相同的密码才能正常通信auth_pass yegoo123}track_script {chk_http_port #调用检测脚本}virtual_ipaddress {143.1.26.214 # 定义虚拟ip(VIP)可多设每行一个}
}
virtual_ipaddress 里面可以配置vip,在线上通过vip来访问服务。
interface需要根据服务器网卡进行设置通常查看方式ip add
authentication配置授权访问后备机也需要相同配置
10-4.修改143.1.26.213的keepalived配置文件
#先备份配置文件
cd /etc/keepalived/
cp -a keepalived.conf keepalived.conf_bak
vim /etc/keepalived/keepalived.conf! Configuration File for keepalived#检测脚本
vrrp_script chk_http_port {script /usr/local/nginx/src/nginx_check.sh #心跳执行的脚本检测nginx是否启动interval 2 #检测脚本执行的间隔weight 2 #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {state BACKUP # 指定keepalived的角色MASTER为主BACKUP为备interface ens192 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ip add查看你具体的网卡virtual_router_id 77 # 虚拟路由编号主从要一致priority 99 # 优先级数值越大获取处理请求的优先级越高advert_int 1 # 检查间隔默认为1s(vrrp组播周期秒数)#授权访问authentication {auth_type PASS #设置验证类型和密码MASTER和BACKUP必须使用相同的密码才能正常通信auth_pass yegoo123}track_script {chk_http_port #调用检测脚本}virtual_ipaddress {143.1.26.214 # 定义虚拟ip(VIP)可多设每行一个}
}
10-5.做了实验把26.212整挂vip会自动跳到26.213
11.完成