集群版安装

北极星支持高可用的集群安装架构模型,支持多级的容灾架构,适用于用户在生产环境上使用北极星。

集群版控制面无状态化,通过DB以及Redis存储资源信息以及相关状态数据。

集群版安装 - 图1

下载软件包

可以从以下2个地址下载北极星软件包,请选择最新的release版本:

安装数据库

安装MySQL

北极星可以与应用程序共用一个数据库,如果有现成MySQL则可以跳过这一步。

MySQL版本支持

  • 开源MySQL版本支持:当前仅支持 >= 5.7,低版本暂未支持。
  • 云厂商MySQL支持
    • 腾讯云:支持 Tencent MySQL版,暂不支持 TDSQL-C MySQL兼容
    • 阿里云:支持云数据库RDS MySQL 版

安装开源版本MySQL的步骤可参考:MySQL安装

安装完MySQL后,需要执行数据导入,解压源码包并执行导入:

第一次安装北极星

  1. unzip polaris-$version.zip
  2. cd polaris-$version
  3. mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/scripts/polaris_server.sql

已有在运行的北极星,执行升级store/sqldb/scripts/delta中的升级脚本

  1. unzip polaris-$version.zip
  2. cd polaris-$version
  3. mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/scripts/delta/v160-v170.sql

安装Redis

北极星可以与应用程序共用一个Redis,如果有现成Redis则可跳过这一步。

安装开源版本Redis的步骤可参考:Redis安装

安装后,需要设置Redis允许远程主机访问。可以修改redis.conf配置文件:

  1. bind 0.0.0.0
  2. protected-mode no

修改后重启Redis生效。

使用 Linux 安装

安装服务端

安装控制面

下载软件包:下载polaris-server-release_$version.linux.$arch.zip,解压后进入polaris-server-release_$version.linux.$arch目录

配置数据库参数:修改polaris-server.yaml里面的store配置,去掉boltdbStore相关配置,并放开defaultStore相关配置。

  1. # 存储配置
  2. store:
  3. # 数据库存储插件
  4. name: defaultStore
  5. option:
  6. master:
  7. dbType: mysql
  8. dbName: polaris_server
  9. dbAddr: ##数据库地址,格式为ip:port##
  10. dbUser: ##数据库用户名##
  11. dbPwd: ##数据库密码##

开启自动注册:修改polaris-server.yaml里面的服务自注册配置,将enable_register改成true,并填入probe_address:

  1. bootstrap:
  2. polaris_service:
  3. # 设置为true代表启用自动注册
  4. enable_register: true
  5. # 填入数据库地址,用于获取当前节点ip信息
  6. probe_address: ##数据库地址##

配置Redis参数:修改polaris-server.yaml里面的healthcheck配置,去掉heartbeatMemory相关配置,并放开heartbeatRedis相关配置。

单节点,主从模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. #填入redis的IP以及端口
  6. kvAddr: ##REDIS_ADDR##
  7. #填入redis的密码
  8. kvPasswd: ##REDIS_PWD##
  9. maxIdle: 200
  10. idleTimeout: 120s
  11. connectTimeout: 200ms
  12. msgTimeout: 200ms
  13. concurrency: 200

集群模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. deployMode: cluster
  6. addrs:
  7. - "127.0.0.1:7001"
  8. - "127.0.0.1:7002"
  9. - "127.0.0.1:7003"
  10. kvPasswd: "polaris"
  11. poolSize: 233
  12. minIdleConns: 30
  13. idleTimeout: 120s
  14. connectTimeout: 200ms
  15. msgTimeout: 200ms
  16. concurrency: 200
  17. withTLS: false

哨兵模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. deployMode: sentinel
  6. addrs:
  7. - "127.0.0.1:26379"
  8. - "127.0.0.2:26379"
  9. - "127.0.0.3:26379"
  10. masterName: "my-sentinel-master-name"
  11. sentinelUsername: "sentinel-polaris" # sentinel 客户端的用户名
  12. sentinelPassword: "sentinel-polaris-password" # sentinel 客户端的密码
  13. kvPasswd: "polaris" # redis 客户端的密码
  14. poolSize: 233
  15. minIdleConns: 30
  16. idleTimeout: 120s
  17. connectTimeout: 200ms
  18. msgTimeout: 200ms
  19. concurrency: 200
  20. withTLS: false

启动polaris-server:

  1. bash ./tool/start.sh

安装控制台

下载软件包:下载polaris-console-release_$version.linux.$arch.zip,解压后进入polaris-console-release_$version.linux.$arch目录

修改配置:打开polaris-console.yaml文件,修改polarisServer的地址,将原来的127.0.0.1:8090替换成polarisServer的监听地址

  1. polarisServer:
  2. address: "${polaris-server的IP地址}:8090"

启动polaris-console:

  1. bash ./tool/start.sh

安装可选功能

安装监控组件

下载软件包:点击下载链接,下载prometheus版本,解压后进入prometheus-2.28.0.linux-amd64目录中。

修改prometheus配置:打开 prometheus.yml文件,修改prometheus的job配置,增加http_sd_configs,其作用是告知prometheus需要从北极星获取应用的监控上报的地址。

  1. - job_name: 'prometheus'
  2. static_configs:
  3. - targets: ['localhost:9090']
  4. http_sd_configs:
  5. - url: http://${polaris的IP地址}:8090/prometheus/v1/clients
  6. honor_labels: true

启动prometheus:

  1. nohup ./prometheus --web.enable-lifecycle --web.enable-admin-api >> prometheus.out 2>&1 &

修改控制台配置:进入polaris-console的安装目录,打开polaris-console.yaml文件,修改monitorServer的地址,将原来的127.0.0.1:9090替换成prometheus的监听地址。

  1. monitorServer:
  2. address: "${prometheus的IP地址}:9090"

重启控制台:进入polaris-console的安装目录,执行以下语句重启。

  1. bash ./tool/stop.sh
  2. bash ./tool/start.sh

说明:

假如您的网络环境不支持 prometheus 主动从北极星 SDK 拉取(pull模式)监控指标,则需要部署 pushgateway 组件,同时调整 prometheus.yml 文件添加以下配置

  1. - job_name: 'pushgateway'
  2. static_configs:
  3. - targets: ['${pushgateway 服务端IP}:9091']

安装分布式限流组件

下载软件包:下载polaris-limiter-release_$version.linux.$arch.zip,解压后进入polaris-limiter-release_$version.linux.$arch目录。

修改配置:打开polaris-limiter.yaml文件,修改polaris-server-address的值为北极星服务端地址。

polaris-limiter多节点需要通过myid保证顺序,关于myid的设置:

  • 如果是安装单节点的 polaris-limiter,myid 设置为 1 即可;
  • 如果是安装多节点的 polaris-limiter,每个节点的 myid 必须保证唯一。
  1. registry:
  2. enable: true
  3. polaris-server-address: { 北极星服务端 grpc 协议地址 }
  4. name: polaris.limiter
  5. namespace: Polaris
  6. health-check-enable: true
  7. api-servers:
  8. - name: http
  9. option:
  10. ip: 0.0.0.0
  11. port: 8100
  12. - name: grpc
  13. option:
  14. ip: 0.0.0.0
  15. port: 8101
  16. limit:
  17. myid: { 服务端节点唯一标识信息,int 类型}

启动polaris-limiter:

  1. bash ./tool/start.sh
  2. bash ./tool/p.sh

使用 K8s 安装

安装服务端

下载软件包:下载polaris-cluster-release_$version.kubernetes.zip,解压后进入polaris-cluster-release_$version.kubernetes目录。

配置数据库参数:修改02-polaris-server-config.yaml里面的store配置,去掉boltdbStore相关配置,并放开defaultStore相关配置。

  1. # 存储配置
  2. store:
  3. # 数据库存储插件
  4. name: defaultStore
  5. option:
  6. master:
  7. dbType: mysql
  8. dbName: polaris_server
  9. dbAddr: ##数据库地址,格式为ip:port##
  10. dbUser: ##数据库用户名##
  11. dbPwd: ##数据库密码##

开启自动注册:修改02-polaris-server-config.yaml里面的服务自注册配置,将enable_register改成true,并填入probe_address:

  1. bootstrap:
  2. polaris_service:
  3. # 设置为true代表启用自动注册
  4. enable_register: true
  5. # 填入数据库地址,用于获取当前节点ip信息
  6. probe_address: ##数据库地址##

配置Redis参数:修改02-polaris-server-config.yaml里面的healthcheck配置,去掉heartbeatMemory相关配置,并放开heartbeatRedis相关配置。

单节点,主从模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. #填入redis的IP以及端口
  6. kvAddr: ##REDIS_ADDR##
  7. #填入redis的密码
  8. kvPasswd: ##REDIS_PWD##
  9. maxIdle: 200
  10. idleTimeout: 120s
  11. connectTimeout: 200ms
  12. msgTimeout: 200ms
  13. concurrency: 200
  14. # redis 库,非必选,默认为 0
  15. db: 0

集群模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. deployMode: cluster
  6. addrs:
  7. - "127.0.0.1:7001"
  8. - "127.0.0.1:7002"
  9. - "127.0.0.1:7003"
  10. kvPasswd: "polaris"
  11. poolSize: 233
  12. minIdleConns: 30
  13. idleTimeout: 120s
  14. connectTimeout: 200ms
  15. msgTimeout: 200ms
  16. concurrency: 200
  17. withTLS: false
  18. # redis 库,非必选,默认为 0
  19. db: 0

哨兵模式

  1. healthcheck:
  2. checkers:
  3. - name: heartbeatRedis
  4. option:
  5. deployMode: sentinel
  6. addrs:
  7. - "127.0.0.1:26379"
  8. - "127.0.0.2:26379"
  9. - "127.0.0.3:26379"
  10. masterName: "my-sentinel-master-name"
  11. sentinelUsername: "sentinel-polaris" # sentinel 客户端的用户名
  12. sentinelPassword: "sentinel-polaris-password" # sentinel 客户端的密码
  13. kvPasswd: "polaris" # redis 客户端的密码
  14. poolSize: 233
  15. minIdleConns: 30
  16. idleTimeout: 120s
  17. connectTimeout: 200ms
  18. msgTimeout: 200ms
  19. concurrency: 200
  20. withTLS: false
  21. # redis 库,非必选,默认为 0
  22. db: 0

执行安装

  1. kubectl create -f 00-polaris-namespace-config.yaml
  2. kubectl create -f 01-polaris-console-config.yaml
  3. kubectl create -f 02-polaris-server-config.yaml
  4. kubectl create -f 03-polaris-server.yaml

安装可选功能

安装监控组件

  1. kubectl create -f 04-prometheus.yaml

修改polaris-console-config的ConfigMap,修改monitorServer的地址,将原来的127.0.0.1:9090替换成prometheus的K8S服务域名。

  1. monitorServer:
  2. address: "${prometheus的服务域名}:9090"

说明:

假如您的网络环境不支持 prometheus 主动从北极星 SDK 拉取(pull模式)监控指标,则需要部署 pushgateway 组件,同时调整 prometheus.yml 文件添加以下配置

  1. - job_name: 'pushgateway'
  2. static_configs:
  3. - targets: ['${pushgateway 服务端IP}:9091']

安装分布式限流组件

  1. kubectl create -f 05-polaris-limiter-config.yaml
  2. kubectl create -f 06-polaris-limiter.yaml

使用 Helm 安装

下载软件包:下载 polaris-helm-release_$version.kubernetes.zip,解压后进入 polaris-helm-release_$version.kubernetes.zip 目录。

安装服务端

您需要修改 values.yaml ,将 global.mode 设置为 cluster ,同时设置 polaris.storage.dbpolaris.storaate.redis 的地址信息。 确保您的 mysql 已经使用下面的命令初始化了。

  1. mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/polaris_server.sql

设置好后,使用下面的命令安装 chart:

  1. $ cd deploy/helm
  2. $ helm install ${release_name} .

检查安装

部署后可以通过以下命令观察到 pod 正常运行:

  1. $ kubectl get po -n polaris-system
  2. NAME READY STATUS RESTARTS AGE
  3. polaris-0 2/2 Running 0 2m44s
  4. polaris-prometheus-6cd7cd5fc6-gqtcz 2/2 Running 0 2m44s

如果您在 values.yaml 中配置了 service.typeLoadBalancer 则可以使用 polaris 的 service 的 EXTERNAL-IP:webPort 访问到北极星的页面。 如果您的k8s 集群不支持 LoadBalancer ,可以将 service.typeNodePort ,通过 nodeip:nodeport 访问。

安装后验证

登录控制台的默认登录账户信息。

  1. 用户:polaris
  2. 密码:polaris

访问http://{控制台IP}:8080,可以看到登录页面,登录后可以成功看到北极星服务治理控制台内容。

执行以下命令,查看 polaris.limiter 服务下的实例信息,是否包含限流服务。

  1. curl --location --request POST '127.0.0.1:8090/v1/Discover' \
  2. --header 'Content-Type: application/json' \
  3. --data-raw '{
  4. "type": 1,
  5. "service": {
  6. "name": "polaris.limiter",
  7. "namespace": "Polaris"
  8. }
  9. }'

可选 开启二次寻址

在大规模集群(百万级别服务)场景下,可对对北极星按照功能模块进行集群拆分,注册发现、健康检查、控制台操作划分为不同集群来进行处理,各集群相互独立,可按照请求量独立扩展。客户端通过埋点集群的二次寻址机制,为接口寻址到目标集群进行功能接口的调用。

二次寻址.png

服务端配置

注册发现集群的 polaris-server.yaml 配置文件修改

开启服务端自动注册 polaris.discover 服务

  1. bootstrap:
  2. polaris_service:
  3. probe_address: ##数据库地址,格式为ip:port##
  4. enable_register: true
  5. isolated: false
  6. services:
  7. - name: polaris.discover
  8. protocols:
  9. - service-grpc

关闭健康检查客户端接口

  1. apiservers:
  2. - name: service-grpc
  3. option:
  4. listenIP: "0.0.0.0"
  5. listenPort: 8091
  6. connLimit:
  7. openConnLimit: false
  8. maxConnPerHost: 128
  9. maxConnLimit: 5120
  10. enableCacheProto: true
  11. sizeCacheProto: 128
  12. tls:
  13. certFile: ""
  14. keyFile: ""
  15. trustedCAFile: ""
  16. api:
  17. client:
  18. enable: true
  19. include: [discover, register]
健康检查集群的 polaris-server.yaml 配置文件修改

开启服务端自动注册 polaris.healthcheck 服务

  1. bootstrap:
  2. polaris_service:
  3. probe_address: ##数据库地址,格式为ip:port##
  4. enable_register: true
  5. isolated: false
  6. services:
  7. - name: polaris.healthcheck
  8. protocols:
  9. - service-grpc
  10. - name: polaris.checker
  11. protocols:
  12. - service-grpc

只开放健康检查客户端接口

  1. apiservers:
  2. - name: service-grpc
  3. option:
  4. listenIP: "0.0.0.0"
  5. listenPort: 8091
  6. connLimit:
  7. openConnLimit: false
  8. maxConnPerHost: 128
  9. maxConnLimit: 5120
  10. enableCacheProto: true
  11. sizeCacheProto: 128
  12. tls:
  13. certFile: ""
  14. keyFile: ""
  15. trustedCAFile: ""
  16. api:
  17. client:
  18. enable: true
  19. include: [healthcheck]

修改完 polaris-server.yaml 配置之后,重启服务端节点即可

客户端配置