第二次搭建Nginx+keepalived(第一次忘记写了并且都忘记怎么部署了)

因公司使用,小白才入公司3个月时间不到,就把一个转发服务上用到的Nginx+keepalived以及rocketmq交给我来运维,小白啥都不会啊,那阵还有领导在,不会可以指导一下,现在入公司都一年了,以前也有做过,只是不想写博客,所以废话不多说开始干活!

 

我首先是安装的keepalived,但是呢看网上很多大佬的文章都是先装Nginx,应该是因为只有安装了Nginx负载均衡成功后,才去安装keepalived的进行虚拟ip配置,正常步骤嘛,所以我这里先写Nginx的吧。

 

1.安装Nginx

1.1 准备工作

首先需要找两台服务器,我这里学习就用了虚拟机(192.168.59.128、131),然后再安装Nginx以及keepalived的环境。

安装Nginx+keepalived我这里只配了一个,要配置两个就去

https://blog.csdn.net/qq_35457078/article/details/84879338

这个大佬的博客去看吧

1.1.1安装c++编译环境

服务器有外网的可以直接用yum,但是我公司给的服务器全是没得外网的,头大,需要自己去找软件,这样我就写两种:一种yum命令安装,一种离线安装,怕下次没外网时候忘记怎么弄,至于这些环境放在哪,我建议是放在usr/local下,当然我虚拟机里usr目录下空间不够就直接扔在home目录下了,都是一样的,只是看着整洁方便,以及可能是程序员的素养吧。

(1)安装gcc

yum安装(需要服务器有外网)

yum install gcc gcc-c++ autoconf make

离线安装

tar -zvxf gcc_rpm.tar.gz
所有安装 
rpm -Uvh  *.rpm  --nodeps  --force  安装

rpm -e –nodeps xxxx 删除

 

 

(2)安装openssl

yum安装

yum -y install openssl-deve

离线安装

tar zxvf openssl-1.1.0h.tar.gz
cd openssl-1.1.0h
./config && make && make install

 

 

(3)安装prce

yum安装

yum -y install prce-devel

离线

tar zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure && make && make install

 

 

(4)安装zlib

yum安装

yum -y install zlib-devel

离线安装

tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure && make && make install

 

 

(5)安装libnl

yum安装

yum -y install libnl libnl-devel
yum -y install libnl libnfnetlink-devel

离线安装

...这个我没找到我是安装keepalived报错了,不过基本上前面那四个就够了。

 

1.2 正式安装Nginx

将下好的Nginx包上传至服务器上,我这里传的home目录

tar -zvxf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --prefix=usr/local/nginx
make && make install

这样就完成Nginx的安装以及编译。

 

1.3 修改Nginx负载均衡配置

[root@localhost home]# cd nginx-1.14.0/conf
[root@localhost conf]# vim nginx.conf


events
{
	use epoll;            #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大	提高nginx的性能

	worker_connections  1024;    #单个后台worker process进程的最大并发链接数
}
#HTTP服务器
http {
#设定mime类型,类型由mime.type文件定义
include       mime.types;
default_type  application/octet-stream;
#设定日志格式 不需要可以注释掉
#access_log    /var/log/nginx/access.log;

#设定负载均衡的服务器列表
upstream load_balance_server {
    #weigth参数表示权值,权值越高被分配到的几率越大
    server 192.168.59.128:2018   weight=5;
    server 192.168.59.131:2018   weight=5;
}

 server {
    #侦听2019端口
    listen       2019;
    #定义使用www.xx.com访问,须将www.helloworld.com加到/etc/hosts中
    #server_name  www.helloworld.com;
    root /home/apache-tomcat-8.5.35/webapps;

    #对所有请求进行负载均衡请求
    location / {
        index       index.html index.htm;  #定义首页索引文件的名称
        proxy_pass  http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表

        #以下是一些反向代理的配置(可选择性配置)
        #proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_connect_timeout 90;          #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout 90;             #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout 90;             #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size 4k;              #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size 64k;       #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k;    #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        client_max_body_size 10m;          #允许客户端请求的最大单文件字节数
        client_body_buffer_size 128k;      #缓冲区代理缓冲用户端请求的最大字节数
    }
  }
}

配置文件修改后,先别急着启动,最好先去安装tomcat,因为这样更方便你去看是否负载成功。

1.4 安装tomcat

上传包至服务器

[root@localhost home]# tar -zxvf apache-tomcat-8.5.31.tar.gz 
[root@localhost home]# cd apache-tomcat-8.5.31/webapps/examples/
[root@localhost examples]# vim index.html

哦对了,我前面配置的Nginx的端口有变化不是8080,所以我将我的tomcat也修改了端口,至于如何改,很简单的,我这里协商吧

[root@localhost apache-tomcat-8.5.31]# cd conf/
[root@localhost conf]# vim server.xml 

 

 

这三个标注红色箭头的进行修改下就行,端口更改,这样不怕你服务器上启动多个tomcat,不会造成端口冲突。

 

1.5 启动Nginx

上面的准备工作都做好了可以进行启动了

[root@localhost home]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -c /home/hyxt/nginx-1.14.0/conf/nginx.conf

没报错就证明启动成功了!

[root@localhost sbin]# ps -ef|grep nginx
root      39795      1  0 Nov25 ?        00:00:00 nginx: master process ./nginx -c /home/nginx-1.14.0/conf/nginx.conf
nobody    39796  39795  0 Nov25 ?        00:00:01 nginx: worker process                        
root      50969   2620  0 00:45 pts/0    00:00:00 grep nginx

其中master是nginx主线程,如要停止的话,就认准这个的pid就行

从容停止(Nginx停止)

kill -QUIT 39795

然后可以记住一定要关掉自己服务器的防火墙,当然要是必须开的话,你自己配置防火墙吧,很简单的iptables配置,Firewalls就有点难了,我反正没咋用过,不过应该也很简单。

service iptables stop (关闭防火墙)

service iptables status (查看防火墙状态)

最后就成功了,你可以用你的浏览器输入你配置的Nginx的ip就可以看到情况了。

看我输入的是128地址,被分配到131上了,就说明成功了。

 

 

 

2.安装keepalived

关于Keepalived的介绍及nginx与其组成高可用结构的原理可以看网友的这篇博客,感谢这位大佬,博客里说的很清楚
https://www.cnblogs.com/kevingrace/p/6138185.html

2.1 安装依赖包(环境)以及keepalived

上面安装Nginx时候就安装过这些,看吧要是再报错就看报什么错就去找离线安装包安装,要是能够外网直接下就直接下就行了。

接着安装及编译keepalived

[root@localhost home]# tar -zxvf keepalived-1.4.4.tar.gz
[root@localhost home]# cd keepalived-1.4.4/
[root@localhost keepalived-1.4.4]# ./configure --prefix=/usr/local/keepalived
[root@localhost keepalived-1.4.4]# make && make install

2.2 配置keepalived

安装完成后,一般会将keepalived注册为系统服务,设置为开机启动,防止服务挂掉。

进入安装目录的etc目录下,将keepalived相应的配置文件拷贝到系统相应的目录当中。keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件,如果没有找到则使用默认的配置。/etc/keepalived目录安装时默认是没有创建的,需要手动创建。

我这里只配置了一个主节点,要是想配置一主从的话,最上面网址链接的大佬有配置

192.168.59.128 主节点

[root@localhost keepalived-1.4.4]# mkdir -p /etc/keepalived
[root@localhost keepalived-1.4.4]# cp /home/keepalived-1.4.4/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
[root@localhost keepalived-1.4.4]# cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived
[root@localhost keepalived-1.4.4]# cd /etc/keepalived/
[root@localhost keepalived-1.4.4]# vim keepalived.conf


 ! Configuration File for keepalived
 global_defs {
     #唯一标识,一般为用户名
     router_id username1
 }
 #监控服务.NGINX mysql等
 vrrp_script chk_nginx {
     script "/usr/local/keepalived/check_nginx.sh"
     #每2s检查一次
     interval 2
     #每次检查-20
     weight -20
 }
 vrrp_instance VI_1 {
     ##主从设置 MASTER/BACKUP  
     state MASTER
     #网卡名称
     interface eth0
     #同一个集群下这个 router_id是一样的
     virtual_router_id 51
     #本机的ip,需要修改
     mcast_src_ip 192.168.59.128
     #优先级,从节点 配置,需要小于主节点
     priority 100
     #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
     advert_int 1
     #认证的密码
     authentication {
         auth_type PASS
         #设定授权密码,密码相同的为一个集群
         auth_pass 1111
     }
     #触发的脚本
     track_script {
           chk_nginx  #检测脚本,上面配置的
     }
     #虚拟ip地址(同一个集群中的虚拟ip必须得相同,可配置多个)
     virtual_ipaddress {
         192.168.59.110
     }
 }

 

然后增加Nginx状态检测脚本:

[root@localhost /]# cd /usr/local/keepalived/
[root@localhost keepalived]# touch check_nginx.sh
[root@localhost keepalived]# chmod 755 check_nginx.sh
[root@localhost keepalived]# vim check_nginx.sh

#!/bin/bash
COUNT=$(ps -C nginx --no-header |wc -l)
echo $COUNT
#判断Nginx 是否都挂掉了
if [ $COUNT -eq 0 ]
then
    #nginx安装地址,如果挂掉了,就启动nginx(nginx命令的地址要写对)
    /usr/local/nginx/sbin/nginx
    echo "重启nginx"
    #等5秒钟后,再次查看是否 启动成功
    sleep 5
    #如果nginx没有启动起来,就直接干掉keepalived
    COUNT=$(ps -C nginx --no-header |wc -l)
    if [ $COUNT -eq 0 ]
    then
            echo "干掉keepalived"
            #如果killall命令不能使用,就需要安装psmisc工具了
            #yum install -y psmisc
            killall keepalived
    fi
fi

 

设置keepalived服务开机启动

[root@localhost keepalived]#  chmod 755 /etc/init.d/keepalived #权限
[root@localhost keepalived]#  chkconfig keepalived on #开机启动
[root@localhost keepalived]#  chkconfig --add keepalived  #加为系统服务
[root@localhost keepalived]#  service keepalived start  #启动服务
[root@localhost keepalived]#  service keepalived status  #查看服务状态

我这里启动失败了,报的错是

正在启动 keepalived:/bin/bash: keepalived: command not found

就根据上面报的错去找,结果在/usr/sbin 下我的keepalived有问题,因此需要重新复制覆盖掉它。

原因:keepalived命令没有在/usr/sbin目录下(或者有问题,我用命令 ll 查看显示为红色,报错状态)

解决方法:cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

然后在启动就没问题啦。

[root@localhost keepalived]# ps -ef |grep keepalived
root      39888      1  0 Nov25 ?        00:00:00 keepalived -D
root      39889  39888  0 Nov25 ?        00:00:00 keepalived -D
root      39891  39888  0 Nov25 ?        00:00:04 keepalived -D
root      56021   2620  0 01:18 pts/0    00:00:00 grep keepalived
[root@localhost keepalived]# service keepalived status
keepalived (pid  39888) 正在运行...

成功!!!!!

 

最后再用你配置的虚拟ip在浏览器上访问

 

 

截图这个负载图是真的难,刷了半天。

好了完工!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值