keepalived+nginx+tomcat+redis+mysql主主架构部署

架构:
两台服务器,两个实体IP,一个虚拟IP。
如下图所示,服务器正常运行时,KEEPALIVED主保证的Nginx的HA,Nginx的主负责两台的Tomcat服务器负载均衡,Redis的主负责Tomcat1和2的会话共享,MySql主主同步保证了数据的安全及稳定性。
当主节点的一个或者多个服务无法正常运行,甚至节点宕机时,备节点能立即接续主节点来执行业务从而实现业务的不中断或短暂中断。
优势:适合硬件有限的小规模集群,且能保证服务器的稳定,高可用运行可持续发展来看,集群规模可升级-麻雀虽小五脏俱全。
劣势:对业务的处理能力有限,毕竟服务器仅两台。

在这里插入图片描述
一,环境:

Centos:7.4
Java:jdk1.8.0_192
Tomcat:apache-tomcat-9.0.13
Nginx:nginx-1.15.8
Keepalived :Keepalivedv1.3.5
Redis:redis-5.0.3
Mysql:mysql-5.7.25 编译安装
Cmak:cmake-3.13.4
Boost:boost_1_59_0

1,需要Jar:

commons-pool2-2.4.2.jar
jedis-2.9.0.jar
tomcat-redis-session-manager.jar

2,依赖环境:

yum -y install gcc pcre-devel zlib-devel openssl-devel make gcc gcc-c++ ncurses-devel bison openssl-devel

3,服务器配置:

节点名称 IP 端口开放 VIP
Master 10.200.36.166 80,1777,6000,3306 10.200.36.168
Backup 10.200.36.167 80,1777,6000,3306 10.200.36.168

二,部署前准备:
1,上传数据包(双节点都需要实施)
下载所需的包,网址:https://download.youkuaiyun.com/download/clownwl/11006534
因为优快云上传大小限制,只能上传200M文件所以上个链接缺少了JDK,JDK:https://download.youkuaiyun.com/download/clownwl/11006810 也可去官网下载。
下载好以后,通过winSCP、Xftp等工具将包上传到/opt/soft目录下(opt /soft)
并赋予该目录下所有文件/文件夹可执行权限(chmod -R 755 *)

2,测试环境,先关闭防火墙和SELinux
关闭SELinux

#setenforce 0
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config --CentOS7.4默认用的是firewalld防火墙

#systemctl stop firewalld.service  --关闭firewalld

3,配置163yum源或者阿里yum源(双节点都需要安装)
去http://mirrors.163.com/.help/CentOS7-Base-163.repo 下载centos7的yum源。
备份原有yum源:

#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

更新生成新的缓存:

#yum clean all
#yum makecache

提前安装依赖包:

#yum -y install gcc pcre-devel zlib-devel openssl-devel make gcc gcc-c++ ncurses-devel bison openssl-devel

三,安装JDK(双节点都需要安装)
在安装JDK前,最好检测下是否安装了openjdk,若有,最好卸载。(rpm -qa | grep jdk)
1,安装JDK:

#cd /opt/soft
#tar -zxvf jdk-8u192-linux-x64.tar.gz -C /opt/
#vim /etc/profile.d/jdk.sh

输入以下内容:

export JAVA_HOME=/opt/jdk1.8.0_192
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

检测:

#java -version

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

返回值若如上所示,说明安装成功

四,安装Nginx(双节点都需要安装)
1,安装nginx

#cd /opt/soft
#tar -xvf nginx-1.15.8.tar.gz
#cd nginx-1.15.8
#./configure
#make
#make install
#cd /usr/local/nginx/sbin
#./nginx -t 检查nginx是否安装成功 若出现以下内容则表示安装成功

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok  
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful 

2,配置nginx以实现负载均衡分发

#cd /usr/local/nginx/conf
#mv nginx.conf nginx.conf.bak --备份配置文件
#vim nginx.conf

主从节点配置文件一样:

user  root;
worker_processes  2;
error_log  /usr/local/nginx/logs/error.log  info;

#指定pid存放文件
pid        logs/nginx.pid;

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

    worker_connections  1024;    #单个后台worker process进程的最大并发链接数
}
http
{
upstream tomcat_pool
    {
     #server tomcat地址:端口号 weight表示权值,权值越大,被分配的几率越大;
     server 10.200.36.166:8080 weight=4 max_fails=2 fail_timeout=30s;
     server 10.200.36.167:8080 weight=4 max_fails=2 fail_timeout=30s;
    }
server {
        listen       80;
        #charset utf-8
        server_name 10.200.36.168;
location / {


        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat_pool;
        client_max_body_size 1000m;
        proxy_cookie_path /scientific  /;
        proxy_set_header Cookie $http_cookie;
 }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

五,安装keepalived(双节点都需要安装)
1,安装Keepalived(两种安装方式)

第一种(推荐):
#yum -y install keepalived
第二种:
#cd /opt/soft
#tar -zxvf keepalived-1.3.5.tar.gz
#cd keepalived-1.3.5
#./configure
#make
#make install

2,Keepalived主从节点配置
声明:以下两个配置文件中interface ens192这个参数,不同的节点用到的网络接口名会不同,具体请使用ifconfig查看当前IP对应的接口名。

#cd /etc/keepalived/
#vim /keepalived.conf

主节点配置文件:

! Configuration File for keepalived

global_defs {
   notification_email {
    xxx@xxx.cn
   }
   notification_email_from   xxx@xxx.cn
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    #该脚本检测ngnix的运行状态,并在nginx进程不存在时尝
    #试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
    script "/opt/ha/check_nginx.sh"
    #每1s检测一次
    interval 1
    # 检测失败(脚本返回非0则优先级2)
    weight 2
}

vrrp_script chk_tomcat {
    #该脚本检测ngnix的运行状态,并在nginx进程不存在时尝
    #试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
    script "/opt/ha/check_tomcat.sh"
    #每1s检测一次
    interval 1
    # 检测失败(脚本返回非0则优先级2)
    weight 2
}

#vrrp_script check_gateway {
#    script "/opt/ha/check_gateway.sh"
#    interval 5
#    fall     4
#    rise     4
#    weight 3
#}

vrrp_instance VI_1 {
    #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
    state MASTER
    # 指定HA监测的网络接口
    interface ens192
    # 虚拟路由标识,要求主从节点一致
    virtual_router_id 55
    # 优先级,在同一vrrp_instance下要求主节点的优先级高于从节点
    priority 100
    # 设定主从节点之间同步检查的时间间隔,单位是秒
    advert_int 1
    authentication {
        # 设置验证类型,主要有PASS和AH两种
        auth_type PASS
        # 设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    virtual_ipaddress {
        # 设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        10.200.36.168
    }
    track_script {
        # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。
        # 定期运行它们来改变优先级,并最终引发主备切换。
        chk_nginx
        chk_tomcat
        #chk_gateway
    }
}

#virtual_server 10.200.36.168 3306 {
#    delay_loop 6
#    lb_algo wrr          #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
#    lb_kind DR           #负载均衡转发规则NAT|DR|RUN
#    persistence_timeout 50
#    protocol TCP
#
#    real_server 10.200.36.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值