keepalived+nginx主备部署,维护

目录

1、安装jdk

2、安装tomcat

3、安装nginx

4、安装keepalived


1、安装jdk

1、上传jdk

2、在Linux系统下的opt目录中查看软件包是否上传成功

[root@hadoop103 sbin]# ls /opt/software/

3、 解压JDK到/opt/module目录下

[root@hadoop103 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

4、配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件

 vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

(2)保存后退出

:wq

(3)source一下/etc/profile文件,让新的环境变量PATH生效

source /etc/profile

6、测试JDK是否安装成功 

2、安装tomcat

注意:linux下运行tomcat需要系统安装jdk,并配置JAVA_HOME环境变量指向jdk安装目录

#上传tomcat至opt目录
cd /opt
#解压tomcat
tar -zxvf apache-tomcat-8.5.32.tar.gz
#解压后的tomcat名字太长了,改简单点
mv apache-tomcat-8.5.32  tomcat
#进入tomcat的bin目录
cd /opt/tomcat/bin
#启动tomcat
./startup.sh

修改tomcat端口号

#修改tomcat端口号
vim  /opt/tomcat/conf/server.xml

修改三个地方的端口:

1、8005端口是用来关闭Tomcat服务的端口,如果此端口被占用,可在配置文件中将8005改成其他端口 

 2、此连接器是负责建立HTTP连接。再通过浏览器访问Tomcat服务器的web应用时使用的就是这个端口

 3、 此连接器负责和其他的HTTP服务器建立连接,再把Tomcat与其他的HTTP服务集成时需要使用此连接器。如果此端口被占用,可在配置文件中将8009改成其他端口 

修改webapps/ROOT/index.jsp  

  tomcat做成服务

[Unit]															#[Unit] 表示这是基础信息
Description=Tomcat                                              #Description 是描述
After=network.target                                            #After 是在那个服务后面启动,一般是网络服务启动后启动
																#Description 是描述
[Service]                                                       #[Service] 表示这里是服务信息
Type=forking                                                    #Type 是服务类型
PIDFile=/usr/local/tomcat/tomcat.pid                            #PIDFile 是服务的pid文件路径, 开启后,必须在tomcat的bin/catalina.sh中加入CATALINA_PID参数
Environment=JAVA_HOME=/opt/module/jdk1.8.0_212                  
Environment=CATALINA_PID=/usr/local/tomcat/tomcat.pid           
ExecStart=/usr/local/tomcat/bin/startup.sh                      #ExecStart 是启动服务的命令
ExecReload=/usr/local/tomcat/bin/catalina.sh restart            #ExecReload 是重启服务的命令
ExecStop=/usr/local/tomcat/bin/catalina.sh stop                 #ExecStop 是停止服务的指令

[Install]														#[Install] 表示这是是安装相关信息
WantedBy=multi-user.target										#WantedBy是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

3、安装nginx

安装依赖包

编译环境gcc g++ 开发库之类的需要提前装好

这次用在线安装的方式,在终端执行以下命令

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

安装pcre

#把pcre复制到opt目录下,解压缩
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install

#可以不做
cd /usr/local/lib
ln -s /usr/local/lib/libpcre.so.1 /lib64/

安装nginx

#复制nginx-1.10.3.tar.gz到opt下
tar -zxvf nginx-1.10.3.tar.gz
mv nginx-1.10.3   nginx
cd nginx
./configure
make && make install
#测试配置文件安装成功:

/usr/local/nginx/sbin/nginx -t

修改ngnix的配置文件

vi /usr/local/nginx/conf/nginx.conf

以下红线中的地方要新增:

在这个地方要增加proxy_pass http://aaa;

 这里的aaa对应上面那个图里面的aaa

nginx设置为服务

#进入配置文件的目录
cd /usr/lib/systemd/system
#修改nginx的服务配置
vim nginx.service

#按i进入修改,修改的文本内容如下
[Unit]    						     #说明
Description=nginx					 #服务名
After=network.target				 #服务类别

[Service]							#参数配置
Type=forking						#ng后台运行的类型
ExecStart=/usr/local/nginx/nginx/sbin/nginx -c /usr/local/nginx/nginx/conf/nginx.conf  #启动命令,用自己的路径
ExecReload=/usr/local/nginx/nginx/sbin/nginx -s reload	#重启命令,用自己的路径
ExecStop=/usr/local/nginx/nginx/sbin/nginx -s quit	    #停止命令,用自己的路径
PrivateTmp=true    #启用私有化临时目录,保证安全性,避免和其他服务冲突

[Install]
WantedBy=multi-user.target

测试

在宿主机访问虚拟机ip,多访问几次,会发现有三分之一的几率主界面出现8080,三分之二的几率主界面出现8090。

 

4、安装keepalived

keepalived安装步骤:

tar -xzvf keepalived-2.2.2.tar.gz
yum -y install gcc 
yum -y install openssl openssl-devel
cd keepalived-2.2.2
./configure --prefix=/usr/local/keepalived
make && make install

如果出现以下错误:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

原因分析:

出现该错误主要原因缺少libnl核心库,只需要安装libnl 和 libnl-devel即可。

解决方案:

安装libnl 和 libnl-devel:

yum -y install libnl libnl-devel

将配置文件拷贝到系统对应的目录下:

mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /opt/software/keepalived-2.2.4/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

加入开机启动项

systemctl enable keepalived

配置leepalived.conf配置文件

一个功能比较完整的常用的 keepalived 配置文件,主要包含以下三块:

! Configuration File for keepalived
#全局定义块
global_defs {
   ...
}

#VRRP 实例定义块
vrrp_instance VI_1 {
   ...
}

#虚拟服务器定义块
virtual_server 10.10.10.2 1358 {
   ...
}

(1)全局定义块

这部分主要用来设置Keepalived的故障通知机制和Router ID标识。示例代码如下:

(2)VRRP 实例定义块·

参数说明:

1)第15行:定义一个vrrp_install实例,名称为VI_1

2)第16行:表示该实例的角色状态,有MASTER和BACKUP两种主备状态。

3)第17行:对外提供服务的网络接口,如eth0,ens33

4)第18行:虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致,否则将出现脑裂问题。

5)第19行:priority表示实例优先级。数字越大,优先级越高。

6)第20行:advert_int为同步通知间隔。主备之间通信检查的时间间隔,默认为1秒。

7)第21~24行:权限认证配置。

8)第25~29行:虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中需要和域名绑定的ip,即可配置的高可用服务监听的ip保持一致。
(3)虚拟服务器定义块

(3)虚拟服务器定义块

参数说明:

1)virtual_server:定义一个虚拟服务器,这个ip是virtual_address中定义的其中一个。语法格式:ip+空格+服务端口

    第58行:delay_loop 6

健康检查时间间隔,单位:秒

    第59行:lb_algo rr

负载均衡调度算法,互联网应用常用方式为 wlc或rr

    第60行:lb_kind NAT

负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则。

    第61行:persistence_timeout 50

http服务会话保持时间,单位:秒

    第62行:protocol TCP

转发协议,分为TCP和UDP两种

2)real_server:真实服务器IP和端口,可以定义多个

    第67行:weight 1

负载权重,值越大,转发的优先级越高

    第81行:connect_timeout 3

服务连接超时时长,单位:秒

    第82行:nb_get_retry 3

服务连接失败重试次数

    第83行:delay_before_retry 3 :重试连接间隔,单位:秒

keepalived+nginx配置文件及检查nginx服务的脚本,如果停了,vip漂移到keepalived备机

#1、设置keepalived.conf
vim /etc/keepalived/keepalived.conf
#添加代码
vrrp_script chk_host_service_status {
       script "/etc/keepalived/host_service_status.sh" #健康检查web状态的脚本
       interval 2       #检测脚本执行的间隔时间
       weight 2
}

track_script {                          #调用健康监测模板,一定要放在vip的配置下面
     chk_host_service_status
   }
#2、编写host_service_status.sh
vim /etc/keepalived/host_service_status.sh
#!/bin/bash
nginx_num=`ps -ef | grep nginx | grep -v grep | wc -l`

if [ $nginx_num -lt 2 ]
then
        echo "web宕机了"
        systemctl stop/restart keepalived #停止主keepalived,让vip漂移到备机上,保证高可用
else
        echo "web正常"
fi

chmod +x host_service_status.sh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值