Smart-SSO单点登录(五):分布式部署

493 阅读2分钟

Smart-SSO支持服务端和客户端多实例的方式部署。它依靠引入Redis来接管服务端凭证存根和客户端凭证的存储,从而实现分布式部署场景下的Token共享。注意客户端和服务端是可以使用不同Redis服务的,且互不影响,只需要保障同一客户端应用或者服务端的多个实例连接的是相同Redis服务就行。以下为简化部署,客户端和服务端使用了同一个Redis服务。同时借助Nginx反向代理实现单域名转发到后端多实例,验证分布式部署下的Token共享。所以项目环境搭建前,你需要准备以下环境。

  • Redis:6.2.1
  • Nginx:1.23.2

1.服务端配置

修改pom.xml文件,把服务端依赖的装配包都改为Redis版本,,并重新maven reload一下。 smart-sso-starter-client改为smart-sso-starter-client-redis smart-sso-starter-server改为smart-sso-starter-server-redis 在这里插入图片描述

修改application.yaml文件,去除服务端地址域名后的8080端口,并开启修改redis连接配置。 在这里插入图片描述

通过环境变量参数动态修改端口的方式,为服务端启动8090和8091两个实例。 在这里插入图片描述 在这里插入图片描述

2.客户端配置

修改smart-sso-demo的pom.xml文件,由smart-sso-starter-client改为smart-sso-starter-client-redis装配redis依赖,并重新maven reload一下。 在这里插入图片描述

修改application.yaml文件,去除服务端地址域名后的8080端口,并开启修改Redis连接配置。 在这里插入图片描述

通过环境变量参数动态修改端口的方式,为服务端启动8092和8093两个实例。 在这里插入图片描述 在这里插入图片描述

3.Nginx配置

找到nginx.conf配置文件,分别增加代理转发配置,让域名server.smart-sso.com转发到本地的8090和8091端口,让demo.smart-sso.com转发到本地的8092和8093端口,并启动/重启nginx,让配置生效。 注:10.31.88.96为本地ip,使用localhost和127.0.0.1可能不生效。

upstream demoServers {
    server 10.31.88.96:8092;
    server 10.31.88.96:8093;
}

server {
    listen       80;
    server_name  demo.smart-sso.com;

    location / {
        proxy_pass http://demoServers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

upstream serverServers {
    server 10.31.88.96:8090;
    server 10.31.88.96:8091;
}

server {
    listen       80;
    server_name  server.smart-sso.com;

    location / {
        proxy_pass http://serverServers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如下图所示: 在这里插入图片描述

4.验证

服务端验证,浏览器访问server.smart-sso.com ,完成登录访问到首页,并进行多次页面请求刷新,可以在后台Debug断点看到端口8090和8091的服务交替访问,说明域名已通过nginx正常转发到8090和8091两个实例。 在这里插入图片描述

在这里插入图片描述

客户端验证,浏览器访问demo.smart-sso.com ,会直接跳转到首页(因为服务端作为它自身的一个客户端已完成单点登录)。并进行多次页面请求刷新,可以看到端口8092和8093交替访问。域名已通过nginx正常转发且Token实现共享。 在这里插入图片描述 在这里插入图片描述