V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jwh199588
V2EX  ›  程序员

sso 单点登录怎么做集群

  •  
  •   jwh199588 · 2019-12-09 22:31:19 +08:00 · 4073 次点击
    这是一个创建于 1810 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为项目的缘故,在环境部署到正式环境,进行压力测试的时候,发现 sso 单点登录的压力特别的高, 现在项目结构是不能调整了,有没有办法针对 sso 做负载均衡,

    23 条回复    2020-06-24 16:11:31 +08:00
    likuku
        1
    likuku  
       2019-12-09 23:13:28 +08:00
    sso 入口是怎么个形式的服务? https? udp? 承载的服务 /服务器 可以横向多机 /实例么?

    可以的话,那就前面挂个负载均衡。
    lhx2008
        2
    lhx2008  
       2019-12-09 23:17:41 +08:00 via Android   ❤️ 1
    seesion 用 key 的形式抽出来放到 redis 上面,sso 本身无状态,横向扩展就可以了,redis 不够就做 redis 集群,至于登录查数据库这里随便个 mysql 主从就能撑住了
    jugelizi
        3
    jugelizi  
       2019-12-09 23:18:39 +08:00
    登录压力高?
    opengps
        4
    opengps  
       2019-12-09 23:19:40 +08:00 via Android
    共享到内存中
    likuku
        5
    likuku  
       2019-12-09 23:20:43 +08:00
    session 传统就用 memcached 了,临时数据嘛,redis 太奢侈
    solaro
        6
    solaro  
       2019-12-10 02:00:55 +08:00
    @likuku memcache 的简单集群可真的比 redis 爽太多了。
    xuanbg
        7
    xuanbg  
       2019-12-10 07:50:28 +08:00
    楼主这有多少用户同时在线啊,sso 居然会撑不住?看看时间都花在什么地方吧,优化下代码应该就好了吧。
    GoRoad
        8
    GoRoad  
       2019-12-10 08:02:38 +08:00
    哪个朋友推荐的 去找哪个朋友
    jwh199588
        9
    jwh199588  
    OP
       2019-12-10 09:33:24 +08:00
    @likuku 使用了 apache 的负载均衡,但是在调用 /oauth/authorize 方法的时候,返回的 code 在另外一台 sso 上并不存在,所有获取 token 的时候,会报错
    lihongjie0209
        10
    lihongjie0209  
       2019-12-10 09:43:36 +08:00
    登录压力高??那这么多用户都查询一个复杂 SQL 你的系统直接就崩了?
    jwh199588
        11
    jwh199588  
    OP
       2019-12-10 09:45:21 +08:00
    @lihongjie0209 我是在做压测的时候,发现所有的用户都需要经过 sso,这样 sso 的压力会特别大,所以想做成集群
    anyforever
        12
    anyforever  
       2019-12-10 09:47:54 +08:00
    难道你的用户都在时时刻刻在做登录操作么。。
    lihongjie0209
        13
    lihongjie0209  
       2019-12-10 09:48:32 +08:00
    @jwh199588 #11
    多少 qps 啊, 压力大是指 CPU ? 内存?响应时间?
    做集群是为了高可用还是高性能?
    zsc8917zsc
        14
    zsc8917zsc  
       2019-12-10 09:53:39 +08:00
    @jwh199588 压测的时候是集中登录吧,现实情况登录压力都是分散的,很难有那么多用户集中登录的情景
    jwh199588
        15
    jwh199588  
    OP
       2019-12-10 09:56:39 +08:00
    @lihongjie0209 主要是因为是国产化平台,所以服务器的性能很低,所以想使用负载来做
    lihongjie0209
        16
    lihongjie0209  
       2019-12-10 10:00:10 +08:00
    那就找一台数据库服务器( mysql 或者 redis )做数据共享, 前面挂两个 sso, 再做一个反向代理就好了。
    JamesMackerel
        17
    JamesMackerel  
       2019-12-10 10:05:11 +08:00 via iPhone
    说的是 oauth 压力大吧,这个可以理解,毕竟每一次请求都会问一下你的 sso 服务器。按照上面老哥说的做个无状态,前面挂个 nginx 就可以了。
    izoabr
        18
    izoabr  
       2019-12-10 11:22:08 +08:00
    @jwh199588 #11 但是业务环境中,用户登陆行为是分散的,而且有 session 加持不是每个请求都要去认证,所以那个压力是一次性的呀。
    index90
        19
    index90  
       2019-12-10 12:09:21 +08:00
    不如先说说你的 SSO 是如何实现的吧,毕竟现在一百个人有一百种“SSO”实现方式……
    ecloud
        20
    ecloud  
       2019-12-10 22:42:41 +08:00
    天生就有很好的集群支持的 SSO 是 kerberos
    likuku
        21
    likuku  
       2019-12-10 22:53:03 +08:00 via iPhone
    @jwh199588 apache 还有负载均衡? LB 我都用 HAProxy,nginx 作负载均衡我都不想用它。SQL 或者任何 DB 查询的多,那么充分用上缓存吧…memcached 传统,但依然管用。
    shawndev
        22
    shawndev  
       2019-12-11 09:16:10 +08:00
    通常登录模块设计合理的话不会成为性能瓶颈,登录能达到性能瓶颈的业务规模会有专人解决这些问题。
    Shikyou
        23
    Shikyou  
       2020-06-24 16:11:31 +08:00
    @index90 实现单点登录最快的方式,可以用国内的 Authing,国外的 Auth0 / AWS Cognito 这一类用户身份验证的云服务,给应用添加注册、登录和访问控制功能很快
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1248 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:50 · PVG 01:50 · LAX 09:50 · JFK 12:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.