单点登录(cas)的高可用部署方案


方案说明

高可用:两台服务器部署着相同的服务,如果有一台故障,另一个自动接管,还能继续提供服务。


Keepalived

Keekpalived工作原理

通过vrrp协议实现:

vrrp:虚拟路由冗余协议
工作方法:当Master 故障后,vip 和 vmac 地址自动漂移到 backup (master 和 backup 会每个 1秒或用户配置的时间 向组播地址发送数据包,检测主或备是否还存活),这时会通知下端主机刷新arp表。

Keepalived工作方式有:

  1. 抢占式:
  2. 非抢占式

Keepalived 安装可以参考以下文档:Linux系统下Keepalived安装

提示:Keepalived 日志存放位置:/var/log/messages


keepaliaved 抢占式配置

master配置

	global_defs {
    
    
	   notification_email {
    
     #邮件通知
	      root@localhost 
	   }
	   notification_email_from [email protected] #报警邮件的发送地址
	   smtp_server 127.0.0.1
	   smtp_connect_timeout 30  #连接超时时长
	   router_id LVS_DEVEL #虚拟路由标识符,正常是当前主机名称node.stone.com
	   vrrp_skip_check_adv_addr   #跳过检查数据报文
	   vrrp_strict   #严格遵守VRRP协议,共有三个要求1.没有VIP地址 2.单播邻居3.在VRRP版本2中有IPv6地址
	   vrrp_iptables   #将产生的iptables规则关闭掉
	   vrrp_garp_interval 0  #arp报文发送延迟
	   vrrp_gna_interval 0  #信息发送延迟
	}
	
	vrrp_instance VI_1 {
    
      #真正配置VRRP实例的地方了,一个配置用{}引起来
	    state MASTER      #一个master一个backup
	    interface eth0       #网络接口
	    virtual_router_id 51  #让master 和 backup 在同一个虚拟路由里,id 号必须相同
	    priority 150   #master要比backup高出来一些,建议高出来50最好,实际上没这么严格
	    advert_int 1 #探测时间间隔,master每次的发送的报文,不发的话backup会认为master挂掉,3或2秒发一次
	    unicast_src_ip IP  #IP地址为keepalived的master地址
	    unicast_peer {
    
    
	         IP2       #IP2为另一个keepalived的backup地址 , keepalived的backup上这个地址反过来即可,需要关闭vrrp_strict参数
	    }
	    authentication {
    
       #认证方式密码或者AH方式,密码只有前八个字符生效
	        auth_type PASS
	        auth_pass 1111
	    }
	    virtual_ipaddress {
    
      #虚拟出来一个或多个VIP地址,可以写多个
	        192.168.200.16 dev eth0 label eth0:0   #重启keepalived即可,双主可以做多个地址
	        192.168.200.17 dev eth0 label eth0:1   #重启keepalived即可,双主可以做多个地址
	    }
	    notify_master "/etc/keepalived/notify.sh master"   #检测到keepalived成为master
	    notify_backup "/etc/keepalived/notify.sh backup"   #检测到keepalived成为backup
	    notify_fault "/etc/keepalived/notify.sh fault"     #检测到keepalived挂掉了
	}

backup配置

	global_defs {
    
    
	   notification_email {
    
     #邮件通知
	      root@localhost 
	   }
	   notification_email_from [email protected] #报警邮件的发送地址
	   smtp_server 127.0.0.1
	   smtp_connect_timeout 30  #连接超时时长
	   router_id LVS_DEVEL #虚拟路由标识符,正常是当前主机名称node.stone.com
	   vrrp_skip_check_adv_addr   #跳过检查数据报文
	   vrrp_strict   #严格遵守VRRP协议,共有三个要求1.没有VIP地址 2.单播邻居3.在VRRP版本2中有IPv6地址
	   vrrp_iptables   #将产生的iptables规则关闭掉
	   vrrp_garp_interval 0  #arp报文发送延迟
	   vrrp_gna_interval 0  #信息发送延迟
	}
	
	vrrp_instance VI_1 {
    
      #真正配置VRRP实例的地方了,一个配置用{}引起来
	    state BACKUP      #一个master一个backup
	    interface eth0       #网络接口
	    virtual_router_id 51  #让master 和 backup 在同一个虚拟路由里,id 号必须相同
	    priority 100   #master要比backup高出来一些,建议高出来50最好,实际上没这么严格
	    advert_int 1 #探测时间间隔,master每次的发送的报文,不发的话backup会认为master挂掉,3或2秒发一次
	    unicast_src_ip IP  #IP地址为keepalived的master地址
	    unicast_peer {
    
    
	         IP2       #IP2为另一个keepalived的backup地址 , keepalived的backup上这个地址反过来即可,需要关闭vrrp_strict参数
	    }
	    authentication {
    
       #认证方式密码或者AH方式,密码只有前八个字符生效
	        auth_type PASS
	        auth_pass 1111
	    }
	    virtual_ipaddress {
    
      #虚拟出来一个或多个VIP地址,可以写多个
	        192.168.200.16 dev eth0 label eth0:0   #重启keepalived即可,双主可以做多个地址
	        192.168.200.17 dev eth0 label eth0:1   #重启keepalived即可,双主可以做多个地址
	    }
	    notify_master "/etc/keepalived/notify.sh master"   #检测到keepalived成为master
	    notify_backup "/etc/keepalived/notify.sh backup"   #检测到keepalived成为backup
	    notify_fault "/etc/keepalived/notify.sh fault"     #检测到keepalived挂掉了
	}

keepaliaved 非抢占式配置

非抢占式不再有主从之分,全部都为 backup ,在配置文件中添加 nopreempt ,用来标识为非抢占式。

原来的master配置

	global_defs {
    
    
	   notification_email {
    
     #邮件通知
	      root@localhost 
	   }
	   notification_email_from [email protected] #报警邮件的发送地址
	   smtp_server 127.0.0.1
	   smtp_connect_timeout 30  #连接超时时长
	   router_id LVS_DEVEL #虚拟路由标识符,正常是当前主机名称node.stone.com
	   vrrp_skip_check_adv_addr   #跳过检查数据报文
	   vrrp_strict   #严格遵守VRRP协议,共有三个要求1.没有VIP地址 2.单播邻居3.在VRRP版本2中有IPv6地址
	   vrrp_iptables   #将产生的iptables规则关闭掉
	   vrrp_garp_interval 0  #arp报文发送延迟
	   vrrp_gna_interval 0  #信息发送延迟
	}
	
	vrrp_instance VI_1 {
    
      #真正配置VRRP实例的地方了,一个配置用{}引起来
	    state MASTER      #一个master一个backup
	    interface eth0       #网络接口
	    virtual_router_id 51  #让master 和 backup 在同一个虚拟路由里,id 号必须相同
	    priority 150   #master要比backup高出来一些,建议高出来50最好,实际上没这么严格
	    advert_int 1 #探测时间间隔,master每次的发送的报文,不发的话backup会认为master挂掉,3或2秒发一次
	    unicast_src_ip IP  #IP地址为keepalived的master地址
	    unicast_peer {
    
    
	         IP2       #IP2为另一个keepalived的backup地址 , keepalived的backup上这个地址反过来即可,需要关闭vrrp_strict参数
	    }
	    authentication {
    
       #认证方式密码或者AH方式,密码只有前八个字符生效
	        auth_type PASS
	        auth_pass 1111
	    }
	    virtual_ipaddress {
    
      #虚拟出来一个或多个VIP地址,可以写多个
	        192.168.200.16 dev eth0 label eth0:0   #重启keepalived即可,双主可以做多个地址
	        192.168.200.17 dev eth0 label eth0:1   #重启keepalived即可,双主可以做多个地址
	    }
	    notify_master "/etc/keepalived/notify.sh master"   #检测到keepalived成为master
	    notify_backup "/etc/keepalived/notify.sh backup"   #检测到keepalived成为backup
	    notify_fault "/etc/keepalived/notify.sh fault"     #检测到keepalived挂掉了
	}

原来的backup配置

	global_defs {
    
    
	   notification_email {
    
     #邮件通知
	      root@localhost 
	   }
	   notification_email_from [email protected] #报警邮件的发送地址
	   smtp_server 127.0.0.1
	   smtp_connect_timeout 30  #连接超时时长
	   router_id LVS_DEVEL #虚拟路由标识符,正常是当前主机名称node.stone.com
	   vrrp_skip_check_adv_addr   #跳过检查数据报文
	   vrrp_strict   #严格遵守VRRP协议,共有三个要求1.没有VIP地址 2.单播邻居3.在VRRP版本2中有IPv6地址
	   vrrp_iptables   #将产生的iptables规则关闭掉
	   vrrp_garp_interval 0  #arp报文发送延迟
	   vrrp_gna_interval 0  #信息发送延迟
	}
	
	vrrp_instance VI_1 {
    
      #真正配置VRRP实例的地方了,一个配置用{}引起来
	    state BACKUP      #一个master一个backup
	    interface eth0       #网络接口
	    virtual_router_id 51  #让master 和 backup 在同一个虚拟路由里,id 号必须相同
	    priority 100   #master要比backup高出来一些,建议高出来50最好,实际上没这么严格
	    advert_int 1 #探测时间间隔,master每次的发送的报文,不发的话backup会认为master挂掉,3或2秒发一次
	    nopreempt   #定位非抢占式,但是记住一定要配置在backup上,backup改掉,但是priority不能修改 
	    unicast_src_ip IP  #IP地址为keepalived的master地址
	    unicast_peer {
    
    
	         IP2       #IP2为另一个keepalived的backup地址 , keepalived的backup上这个地址反过来即可,需要关闭vrrp_strict参数
	    }
	    authentication {
    
       #认证方式密码或者AH方式,密码只有前八个字符生效
	        auth_type PASS
	        auth_pass 1111
	    }
	    virtual_ipaddress {
    
      #虚拟出来一个或多个VIP地址,可以写多个
	        192.168.200.16 dev eth0 label eth0:0   #重启keepalived即可,双主可以做多个地址
	        192.168.200.17 dev eth0 label eth0:1   #重启keepalived即可,双主可以做多个地址
	    }
	    notify_master "/etc/keepalived/notify.sh master"   #检测到keepalived成为master
	    notify_backup "/etc/keepalived/notify.sh backup"   #检测到keepalived成为backup
	    notify_fault "/etc/keepalived/notify.sh fault"     #检测到keepalived挂掉了
	}

Nginx 后端服务健康检查

nginx自带健康检查的缺陷:

  • Nginx只有当有访问时后,才发起对后端节点探测。
  • 如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发
  • 自带模块无法做到预警
  • 被动健康检查

使用第三访模块nginx_upstream_check_module:

  • 区别于nginx自带的非主动式的心跳检测,淘宝开发的tengine自带了一个提供主动式后端服务器心跳检测模块
  • 若健康检查包类型为http,在开启健康检查功能后,nginx会根据设置的间隔向指定的后端服务器端口发送健康检查包,并根据期望的HTTP回复状态码来判断服务是否健康。
  • 后端真实节点不可用,则请求不会转发到故障节点
  • 故障节点恢复后,请求正常转发

nginx_upstream_check_module模块部署流程

  1. 下载nginx_upstream_check_module模块:运行wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master 命令。
  2. 解压:运行unzip nginx_upstream_check_module-master.zip 命令。
  3. 进入nginx的源码目录:运行cd /root/software/nginx-1.19.8 命令。
  4. 增加nginx_upstream_check_module模块以及一些必须的开启的模块:运行./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-threads --with-file-aio --with-http_stub_status_module --add-module=../nginx_upstream_check_module-master/ 命令。
  5. 编译完成后执行make,但不要执行make install 否则会覆盖安装。
  6. 运行cp ./objs/nginx /usr/local/nginx/sbin/ 命令,以打过补丁的nginx二进制文件覆盖原来的旧文件。
  7. nginx.conf 文件中进行健康检查的配置:
	upstream casservers {
    
    
        server 192.168.2.211:8080;
        server 192.168.2.212:8080;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    }
  1. 最后运行以下命令即可:
	cd /usr/local/nginx/
	./sbin/nginx -s reload

Nginx + Keepalived

Nginx 安装可以参考以下文档:Linux系统下Nginx安装

实现思路: 将keepalived 中的vip作为nginx负载均衡的监听地址,并且域名绑定的也是vip的地址。

说明: Nginx 负载均衡实现高可用,需要借助Keepalived地址漂移功能。

Nginx 配置文件:

events {
    
    
    worker_connections 1024;
}
http {
    
    
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 0;
    gzip on;
    upstream casservers {
    
    
        server 192.168.2.211:8080; # 指向tomcat服务的端口
        server 192.168.2.212:8080; # 指向tomcat服务的端口
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    }
    server {
    
    
        listen 80;
        listen 443 ssl;

        #强制转换为https_START
        if ($server_port !~ 443){
    
    
            rewrite ^(/.*)$ https://$host$1 permanent;
        }
        #强制转换为https_END

        location / {
    
    
            root   html;
            index  index.html index.htm;
        }

        location /cas/ {
    
    
            proxy_pass http://casservers/cas/;
        }

        ssl_certificate /etc/ssl/certs/pharmaron-bj.com.pem;
        ssl_certificate_key /etc/ssl/certs/pharmaron-bj.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
        ssl_prefer_server_ciphers on;
        location /nstatus {
    
    
            check_status;
            access_log off;
        }
    }
}

脚本文件:

#!/bin/sh
	nginxpid=$(ps -C nginx --no-header|wc -l)
	#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
	if [ $nginxpid -eq 0 ];then
		 /usr/local/nginx/sbin/nginx
		 sleep 3
		 #2.等待3秒后再次获取一次Nginx状态
		 nginxpid=$(ps -C nginx --no-header|wc -l) 
		 #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
		 if [ $nginxpid -eq 0 ];then
		 	  systemctl stop keepalived
		 fi 
	fi

脚本文件存储至 /usr/local/keepalived/etc/keepalived/check_nginx.sh 目录文件中。

Keepalived 配置文件:

	global_defs {
    
    
	   notification_email {
    
     #邮件通知
	      root@localhost 
	   }
	   notification_email_from [email protected] #报警邮件的发送地址
	   smtp_server 127.0.0.1
	   smtp_connect_timeout 30  #连接超时时长
	   router_id LVS_DEVEL #虚拟路由标识符,正常是当前主机名称node.stone.com
	   vrrp_skip_check_adv_addr   #跳过检查数据报文
	   vrrp_strict   #严格遵守VRRP协议,共有三个要求1.没有VIP地址 2.单播邻居3.在VRRP版本2中有IPv6地址
	   vrrp_iptables   #将产生的iptables规则关闭掉
	   vrrp_garp_interval 0  #arp报文发送延迟
	   vrrp_gna_interval 0  #信息发送延迟
	}
	
	vrrp_script check_http_port {
    
    
	    script "/usr/local/keepalived/etc/keepalived/check_nginx.sh"
	    interval 2
	    weight 2
	}
	vrrp_instance VI_1 {
    
      #真正配置VRRP实例的地方了,一个配置用{}引起来
	    state MASTER      #一个master一个backup
	    interface eth0       #网络接口
	    virtual_router_id 51  #让master 和 backup 在同一个虚拟路由里,id 号必须相同
	    priority 150   #master要比backup高出来一些,建议高出来50最好,实际上没这么严格
	    advert_int 1 #探测时间间隔,master每次的发送的报文,不发的话backup会认为master挂掉,3或2秒发一次
	    unicast_src_ip IP  #IP地址为keepalived的master地址
	    unicast_peer {
    
    
	         IP2       #IP2为另一个keepalived的backup地址 , keepalived的backup上这个地址反过来即可,需要关闭vrrp_strict参数
	    }
	    authentication {
    
       #认证方式密码或者AH方式,密码只有前八个字符生效
	        auth_type PASS
	        auth_pass 1111
	    }
	    virtual_ipaddress {
    
      #虚拟出来一个或多个VIP地址,可以写多个
	        192.168.200.16 dev eth0 label eth0:0   #重启keepalived即可,双主可以做多个地址
	        192.168.200.17 dev eth0 label eth0:1   #重启keepalived即可,双主可以做多个地址
	    }
	    notify_master "/etc/keepalived/notify.sh master"   #检测到keepalived成为master
	    notify_backup "/etc/keepalived/notify.sh backup"   #检测到keepalived成为backup
	    notify_fault "/etc/keepalived/notify.sh fault"     #检测到keepalived挂掉了
	}

Redis

Redis安装可以参考以下文档:

Linux系统下Redis安装
Redis的配置文件参数详解

配置文件 redis.conf

# 是否在后台执行,守护进程
daemonize yes
# redis监听的端口号
port 6379
# 指定redis只接收来自于该 IP 地址的请求,如果不进行设置(或0.0.0.0),那么将处理所有请求
bind 0.0.0.0
# 保护模式,默认yes。配置不指定bind和密码,开启yes允许本地访问拒绝外部访问;配置指定bind和密码,最好关闭no
protected-mode no
# 设置当前Redis连接密码
requirepass cas!1234
# 当master服务设置了密码保护时,slave服务连接master的密码
masterauth cas!1234
# 设置客户端空闲超时则断开(>0),0不会主动断开连接
timeout 0
# 设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处,检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭需要两倍的设置值。
tcp-keepalive 0
# 服务端日志的级别。debug/verbose/notice/warn
loglevel notice
# 数据库的数量,默认使用的数据库是DB 0。可以通过”SELECT “命令选择一个db
# databases 16
# 从服务器是否只读的(yes),可以修改成no(不建议)
slave-read-only yes
# 从服务优先级主服务停止后Sentinel根据优先级选举一个master。低的优先级高,配置成0将不会被选举
# slave-priority 100
# 指定本地数据库文件名
dbfilename redis-svr.rdb
# 同一时间最大客户端连接数,0不限制
# maxclients 128
# redis的进程文件
pidfile /var/run/redis.pid
# 指定日志文件,否则日志会打印到标准输出设备,后台运行的redis标准输出是/dev/null,必须确定有这样的目录与log文件
logfile /usr/local/redis/log/redis-server.log
# 数据目录,rdb、aof等文件写在这个目录,必须确定有这样的目录
dir /usr/local/redis/data
# 加入主Redis中, 主的(master)要把下面的配置注掉,在这里主的(master)是192.168.2.211主机
slaveof 192.168.2.211 6379

必须有logfiledir 对应的目录与文件。

运行redis-server /usr/local/redis/redis.conf命令。

主节点配置文件 sentinel.conf

# 监视master,mymaster为自定义名,6379为master端口,1表示1个setinel认为master失联master才算失联
sentinel myid 47fb031509e86b8f331aa9fe07aec0f2a8ee47ef
# sentinel连主节点的密码
sentinel deny-scripts-reconfig yes
# 当前Sentinel服务运行的端口
port 26379
# 指定redis只接收来自于该 IP 地址的请求,如果不进行设置(或0.0.0.0),那么将处理所有请求
bind 0.0.0.0
# 保护模式,默认yes。配置不指定bind和密码,开启yes允许本地访问拒绝外部访问;配置指定bind和密码,最好关闭no
protected-mode no
# 是否在后台执行,守护进程
daemonize yes
# setinel的进程文件
pidfile "/var/run/redis-sentinel.pid"
# 指定日志文件,否则日志会打印到标准输出设备,后台运行的redis标准输出是/dev/null
logfile "/usr/local/redis/log/redis-sentinel.log"
# 数据目录,rdb、aof等文件写在这个目录
dir "/usr/local/redis/data"
# master失效时间判断范围(毫秒)
sentinel monitor mymaster 192.168.2.211 6379 1
# 主备切换时最多支持多少个slave同时对新的master进行同步
#sentinel parallel-syncs mymaster 1
# failover操作失效时间判断范围(毫秒)
# Generated by CONFIG REWRITE
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster cas!1234
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 9554
sentinel known-replica mymaster 192.168.2.212 6379
sentinel known-sentinel mymaster 192.168.2.212 26379 a8127a35050aa866c807126f7ad730c8ed6e3e44
sentinel current-epoch 35086
user default on nopass sanitize-payload ~* &* +@all

副节点配置文件 sentinel.conf

# 监视master,mymaster为自定义名,6379为master端口,1表示1个setinel认为master失联master才算失联
sentinel myid a8127a35050aa866c807126f7ad730c8ed6e3e44
# sentinel连主节点的密码
sentinel deny-scripts-reconfig yes
# 当前Sentinel服务运行的端口
port 26379
# 指定redis只接收来自于该 IP 地址的请求,如果不进行设置(或0.0.0.0),那么将处理所有请求
bind 0.0.0.0
# 保护模式,默认yes。配置不指定bind和密码,开启yes允许本地访问拒绝外部访问;配置指定bind和密码,最好关闭no
protected-mode no
# 是否在后台执行,守护进程
daemonize yes
# setinel的进程文件
pidfile "/var/run/redis-sentinel.pid"
# 指定日志文件,否则日志会打印到标准输出设备,后台运行的redis标准输出是/dev/null
logfile "/usr/local/redis/log/redis-sentinel.log"
# 数据目录,rdb、aof等文件写在这个目录
dir "/usr/local/redis/data"
# master失效时间判断范围(毫秒)
sentinel monitor mymaster 192.168.2.212 6379 1
# 主备切换时最多支持多少个slave同时对新的master进行同步
#sentinel parallel-syncs mymaster 1
# failover操作失效时间判断范围(毫秒)
# Generated by CONFIG REWRITE
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster cas!1234
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 35086
sentinel known-sentinel mymaster 192.168.2.211 26379 47fb031509e86b8f331aa9fe07aec0f2a8ee47ef
sentinel current-epoch 35086
user default on nopass sanitize-payload ~* &* +@all

运行redis-sentinel /usr/local/redis/sentinel.conf命令。


Cas(单点登陆)

可以去 CAS 官网 看看,如果要下载代码就得去 Github ,我这边选择的是 apereo/cas-overlay-template

通过git clone https://github.com/apereo/cas-overlay-template.git 命令将代码下载下来或者可以直接将Zip包下载下来。

配置文件

在配置文件application.properties 中添加以下配置;

cas.ticket.registry.redis.sentinel.master=mymaster
cas.ticket.registry.redis.sentinel.node[0]=192.168.2.184:26379
cas.ticket.registry.redis.sentinel.node[1]=192.168.2.183:26379

#webapp session存入redis
cas.webflow.autoconfigure=true
cas.webflow.alwaysPauseRedirect=false
cas.webflow.refresh=true
cas.webflow.redirectSameState=false

cas.webflow.session.lockTimeout=30
cas.webflow.session.compress=false
cas.webflow.session.maxConversations=5
cas.webflow.session.storage=true

spring.session.store-type=redis
spring.redis.host=127.0.0.1
spring.redis.password=cas!1234
spring.redis.port=6379
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.node[0]=192.168.2.184:26379
spring.redis.sentinel.node[1]=192.168.2.183:26379

使用 gradlew clean build.\gradlew clean build 命令将cas打成war包,之后将war包上传到服务器上(我这里的具体目录为:/usr/local/tomcat/apache-tomcat-9.0.43/webapps/,根据tomcat的安装目录自行改变)。


设置开机自启动

keepaliaved 开机自启动

systemctl enable keepalived.service

redis-server 开机自启动

运行 vi /etc/rc.loca 命令,点击 Shift + G 在行尾添加 /root/software/redis-6.2.1/src/redis-server /root/software/redis-6.2.1/redis.conf

redis-sentinel 开机自启动

运行 vi /etc/rc.loca 命令,点击 Shift + G 在行尾添加 /root/software/redis-6.2.1/src/redis-sentinel /root/software/redis-6.2.1/sentinel.conf

tomcat 开机自启动

运行 vi /etc/rc.loca 命令,点击 Shift + G 在行尾添加 /usr/lib/tomcat/apache-tomcat-9.0.43/bin/startup.sh

nginx 开机自启动

运行 vi /etc/rc.loca 命令,点击 Shift + G 在行尾添加 /usr/local/nginx/sbin/nginx

相关报错处理方法

configure: error: no acceptable C compiler found in $PATH 错误解决

configure: error: !!! OpenSSL is not properly installed on your system. !!! 错误解决

WARNING - this build will not support IPVS with IPv6. 警告解决

Job for keepalived.service failed because the control process exited with error code. 错误解决

systemctl start xxxxx.service命令无法正常启动服务


猜你喜欢

转载自blog.csdn.net/baidu_41847368/article/details/114975183