博客
关于我
Springcloud Oauth2 HA篇
阅读量:387 次
发布时间:2019-03-05

本文共 2275 字,大约阅读时间需要 7 分钟。

Spring Cloud Oauth2 集成 k8s 高可用性实现

背景

在前面的文章中,详细介绍了Spring Cloud结合Oauth2的鉴权认证方式。本文将基于此,探讨如何将其与k8s(Kubernetes)结合,实现高可用性(HA)的部署。

回顾历史

在之前的代码结构中:

  • 鉴权中心:Oauth2 服务
  • 订单系统:Oauth2 的客户端1
  • 用户管理系统:Oauth2 的客户端2

每个服务之间的耦合性较低,但由于频繁的调用,存在较高的流量交互。如何在这种情况下实现高可用性,是一个值得探讨的问题。

引入k8s的Service方法

在前面的文章中,已经讲解了如何使用k8s的Service方式创建服务并部署多个Pod,同时结合Load Balancer(LB)实现负载均衡。这种方法通过定义服务域名(Service)和负载均衡规则(Ingress)来实现服务的高可用性。在本文中,我们将基于此,探讨如何将Oauth2服务与k8s结合,实现微服务的负载均衡。

配置与实现

在配置过程中,我们需要注意以下几点:

  • 启用发现客户端:在启动类中添加@EnableDiscoveryClient注解,以便Oauth2服务能够发现其他节点。
  • 负载均衡配置:在注入RestTemplate时,使用@LoadBalanced注解,确保客户端能够智能地选择健康节点。
  • 服务发现和LB:通过k8s的Service和Ingress资源,定义服务域名和负载均衡规则,实现多节点的负载均衡。
  • 配置示例

    cas-server-url: http://cas-server-service# 可以配置为HA地址或http://localhost:2000security:  oauth2:    client:      client-id: admin-web      client-secret: admin-web-123      user-authorization-uri: ${cas-server-url}/oauth/authorize      access-token-uri: ${cas-server-url}/oauth/token    resource:      loadBalanced: true      id: admin-web      user-info-uri: ${cas-server-url}/api/user      prefer-token-info: false

    代码示例

    package com.damon;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import com.damon.config.EnvConfig;@Configuration@EnableAutoConfiguration@ComponentScan(basePackages = {"com.damon"})@EnableConfigurationProperties(EnvConfig.class)@EnableDiscoveryClientpublic class AdminApp {    public static void main(String[] args) {        SpringApplication.run(AdminApp.class, args);    }}

    测试示例

    curl -i -X POST -d "username=admin&password=123456&grant_type=password&client_id=admin-web&client_secret=admin-web-123" http://192.168.8.10:5556/cas-server/oauth/token

    通过以上命令,可以测试Oauth2服务的认证功能是否正常工作。

    总结

    通过以上配置和实现,我们成功将Oauth2服务与k8s集成,实现了微服务的高可用性和负载均衡。这种方法不仅适用于Spring Boot,还可以扩展到其他语言(如Python、Go、Rust等)的客户端服务,验证了“微服务无语言化”的理念,即所有语言的服务都可以统一管理和监控。

    个人网站

    欢迎访问我的技术博客,了解更多关于微服务、容器化和高可用性的技术内容。如有任何疑问或建议,欢迎在知识星球中与我交流。

    转载地址:http://cqdzz.baihongyu.com/

    你可能感兴趣的文章
    云计算之路-阿里云上:docker swarm 集群故障与异常
    查看>>
    上周热点回顾(2.19-2.25)
    查看>>
    云计算之路-阿里云上:博客web服务器轮番CPU 100%
    查看>>
    云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
    查看>>
    上周热点回顾(3.26-4.1)
    查看>>
    故障公告:IIS应用程序池停止工作造成博客站点无法访问
    查看>>
    【故障公告】极验验证码故障造成无法登录与注册
    查看>>
    上周热点回顾(6.25-7.1)
    查看>>
    【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
    查看>>
    工作半年的思考
    查看>>
    不可思议的纯 CSS 滚动进度条效果
    查看>>
    【CSS进阶】伪元素的妙用--单标签之美
    查看>>
    开始CN的生活
    查看>>
    惊闻NBC在奥运后放弃使用Silverlight
    查看>>
    IE下尚未实现错误的原因
    查看>>
    Kubernetes 学习系列文章
    查看>>
    创建自己的Docker基础镜像
    查看>>
    使用Jenkins来实现内部的持续集成流程(上)
    查看>>
    HTTP 协议图解
    查看>>
    Python 简明教程 --- 20,Python 类中的属性与方法
    查看>>