搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)

注: 此文学习自慕课网架构师直通师课程
环境准备:
三台虚拟机:linux(centos7 64位);
** 192.168.237.128;**
192.168.237.129;
** 192.168.237.130;**

一、使用nginx搭建三台tomcat集群

1. 安装nginx

1.1 安装基础环境;
  • 安装c++环境:
    进入目录

    cd /opt/basic/gcc_g++/c++
    

    授权

    chmod +x install.sh
    

    执行

    ./install
    
  • 安装gcc环境

    进入目录

    cd /opt/basic/gcc_g++/gcc
    

    授权

    chmod +x install
    

    执行

    ./install
    
  • 安装zlib包
    解压

     tar -zxvf zlib-1.2.11.tar.gz
    

    进入目录

    cd zlib-1.2.11/
    

    配置

    ./configure
    

    编译安装

    make && make install 
    
  • 安装pcre包
    解压

    tar -zxvf pcre-8.42.tar.gz
    

    进入目录

     cd pcre-8.42/
    

    配置

    ./configure
    

    编译安装

    make  &&  make install
    
  • 安装openssl (可能会有点慢)
    解压

     tar -zxvf openssl-1.1.0h.tar.gz
    

    配置

    ./config
    

    编译

    make
    

    安装

    make install
    
1.2 安装nginx

使用的版本自己定,这里只是贴出了简单的安装步骤。不同的环境可能会有问题,可自行百度,也可给我留言

  • 解压

    tar -zxvf nginx-1.14.0.tar.gz
    
  • 进入解压目录

    cd nginx-1.14...
    
  • 配置

    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi
    
  • 编译

    make
    
  • 安装

    make install 
    
  • 安装成功以后,会生成/usr/local/nginx目录,如下】
    在这里插入图片描述

  • 启动
    进入sbin目录

    ./nginx
    
  • 启动成功,访问IP加端口即可看到nginx页面

    ps -ef |grep nginx 
    

    在这里插入图片描述

  • 如果启动报错nginx.pid找不到,请自行建立文件

    mkdir /var/run/nginx -p
    touch /var/run/nginx/nginx.pid
    

    在重新启动

2.安装tomcat

tomcat安装不在细说,为了方便区分,请在安装时,修改下tomcat默认页面的代码,做好每一台的标识
安装完成以后我的IP分布

nginx   192.168.9.128:80 
tomcat1 192.168.9.128:8080
tomcat1 192.168.9.129:8080
tomcat1 192.168.9.130:8080

3.配置nginx

  • 进入配置文件目录
cd /usr/local/nginx/conf
  • 编辑nginx.conf文件
vim nginx.conf

在如下位置加入如下配置:两步
搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第1张图片

upstream www.imooc.com{
         server 192.168.237.128:8080;
         server 192.168.237.129:8080;
         server 192.168.237.130:8080;
}
 location / {
      proxy_pass http://www.imooc.com;
 }
  • 至此,就配置好了
    访问nginx,可看到如下页面,并且,nginx默认采用轮询的负载配置。每次访问都会转到不同的tomcat
    搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第2张图片
    在这里插入图片描述
  • 注意 :如果中间没有错误,但是访问不到,请检查防火墙是否关闭,或者是否开放端口
systemctl status firewalld  # 检查
systemctl stop firewalld  # 关闭
systemctl start firewalld  #开启
#开放防火墙端口
systemctl-cmd --zone=public --add-port=80/tcp --permanent
systemctl-cmd --zone=public --add-port=8080/tcp --permanent
systemctl-cmd --reload
# 检查端口监听
netstat -ntlp

二、搭建nginx+keepalived双击主备高可用集群

这里,我们需要两台nginx,请按照上面安装nginx的步骤,在129这台虚拟机上安装nginx,并且配置需要一样

1. 安装keepalived

  • 下载
    keepalived官网
    搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第3张图片
    选择需要的版本下载即可
    搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第4张图片
  • 将上面下载的包上传至服务器,并解压,进入解压目录
  • 配置,指定安装目录和配置文件目录(配置文件目录最好就在etc下,否则会有问题)
./configure --prefix=/usr/local/keepalived  --sysconf=/etc

此时,有可能出现如下警告,是因为缺少libnl包,安装即可

***** WARNING - this will not support IPVS  with ipv6...........
yum  -y install libnl libnl-devel 

在进行配置

编译

make && make install
  • 安装完成之后会在/usr/local/keepalived下生成
    搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第5张图片
    etc下
    在这里插入图片描述
    至此安装完成

2.配置keepalived(主)

  • 修改keepalived.conf配置文件
vim /etc/keepalived/keepalived.conf

这里,我们只需要如下配置,多余的可以删除,也可以留着

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL_128  #第一步 
}
vrrp_instance VI_1 {
    state MASTER  # 第二步 
    interface ens33 # 第三步,注意,一定要和主机的一致,否则无法启动,还不报错
    virtual_router_id 51 
    priority 100 
    advert_int 1
    authentication {
        auth_type PASS 
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.131 #第四步,设置虚拟IP
    }
}

配置说明
搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第6张图片

3. 配置keepalived(备)

一样的修改配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL_129 #第一步: 值要全局唯一
}

vrrp_instance VI_1 {
    state BACKUP # 第二步,标识他是备用节点
    interface ens33 # 第三步。设置网卡
    virtual_router_id 51 # 检查和主机一样
    priority 80 #第四步:设置权重,因为时备用节点,所以比主节点低一些,此值是在集群中当主机节点宕机后选取master节点的依据
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.131 #第五步:虚拟IP,与master一致
    }
}

4. 启动

至此,配置完成,可以启动

  • 进入启动目录

    cd /usr/local/keepalived/sbin/
    

    在这里插入图片描述
    直接启动

    ./keepalived
    
  • 启动检查

ps -ef | grep keepa 

在这里插入图片描述
检查虚拟IP,master节点应该有131的ip,而backup节点因为是备用,暂时没有131这个ip

ip addr

这里只需要有131的IP就可以了,因为我们刚才配置的虚拟IP是192.168.9.131
搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第7张图片

  • 此时,访问虚拟IP,成功访问
    搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第8张图片
  • 验证,此时,我们将128的keepalived停掉,再次检查backuo节点的ipip addr,这时候就会发现,backup节点已经出现了虚拟IP131,当我们再次访问192.168.237.131,还是可以访问到tomcat,就说明搭建的高可用集群已经成功了。

三、搭建双主热备高可用集群

这里原理什么的就不多说了(主要是才学怕说错),搭建双主热备原因在于,如果主备机子一直没问题,那么访问量就会一直在主机上,不会切换到备用机中,造成了备用机的资源浪费(暂时这么理解)
话不多说,直接上配置,原先的主机是128,备用是129

  • 主机配置(128)
! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL_128
}
# 前面主备的配置
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.131
    }
}
# 新增的配置,将这个节点配置为备用节点
vrrp_instance VI_2 {
    state BACKUP # 1
    interface ens33
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.132 #新增一个虚拟IP
    }
}

搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第9张图片

  • 备用机配置(129)、

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL_129
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.131
    }
}
#新增配置
vrrp_instance VI_2 {
    state MASTER # 改为nmaster节点
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.237.132 # 设置虚拟IP
    }
}

配置完成
ip 192.168.237.131 主机(128)备用(129)
ip 192.168.237.132 主机(129)备用(128)
再次看看IP,就会出现两个虚拟IP
搭建nginx+keepalived双机主备/双主热备高可用集群(附资料)_第10张图片

你可能感兴趣的:(keepalived)