集群版安装
提示
- 建议用户部署北极星时,修改默认的 token salt 信息: 修改步骤指引
- 建议用户部署完北极星后,修改默认 polaris 用户密码
北极星支持高可用的集群安装架构模型,支持多级的容灾架构,适用于用户在生产环境上使用北极星。
集群版控制面无状态化,通过DB以及Redis存储资源信息以及相关状态数据。
服务端监听端口信息
进程名 | 端口号 | 协议类型 | 用途 |
---|---|---|---|
polaris-console | 8080 | http | 北极星控制台页面端口 |
polaris-limiter | 8100 | http | 限流可用配额下发客户端数据通信 |
polaris-limiter | 8101 | grpc | 限流可用配额下发客户端数据通信 |
polaris-server | 8090 | http | OpenAPI,可以调用注册、配置、治理规则的接口 |
polaris-server | 8761 | http | eureka 协议通信 |
polaris-server | 8848 | http | nacos1.x 协议通信 |
polaris-server | 9848 | grpc | nacos2.x 协议通信 |
polaris-server | 8091 | grpc | 注册发现/服务治理规则下发客户端数据通信 |
polaris-server | 8093 | grpc | 配置中心客户端数据通信 |
polaris-server | 15010 | grpc | xds 数据通信端口 |
下载软件包
可以从以下2个地址下载北极星软件包,请选择最新的release版本:
安装数据库
安装MySQL
北极星可以与应用程序共用一个数据库,如果有现成MySQL则可以跳过这一步。
MySQL版本支持
- 开源MySQL版本支持:当前仅支持 >= 5.7,低版本暂未支持。
- 云厂商MySQL支持
- 腾讯云:支持 Tencent MySQL版,暂不支持 TDSQL-C MySQL兼容
- 阿里云:支持云数据库RDS MySQL 版
安装开源版本MySQL的步骤可参考:MySQL安装
安装完MySQL后,需要执行数据导入,解压源码包并执行导入:
第一次安装北极星
unzip polaris-$version.zip
cd polaris-$version
mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/scripts/polaris_server.sql
已有在运行的北极星,执行升级store/sqldb/scripts/delta中的升级脚本
unzip polaris-$version.zip
cd polaris-$version
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配置文件:
bind 0.0.0.0
protected-mode no
修改后重启Redis生效。
使用 Linux 安装
安装服务端
安装控制面
下载软件包:下载polaris-server-release_$version.linux.$arch.zip,解压后进入polaris-server-release_$version.linux.$arch目录
配置数据库参数:修改polaris-server.yaml里面的store配置,去掉boltdbStore相关配置,并放开defaultStore相关配置。
# 存储配置
store:
# 数据库存储插件
name: defaultStore
option:
master:
dbType: mysql
dbName: polaris_server
dbAddr: ##数据库地址,格式为ip:port##
dbUser: ##数据库用户名##
dbPwd: ##数据库密码##
开启自动注册:修改polaris-server.yaml里面的服务自注册配置,将enable_register改成true,并填入probe_address:
bootstrap:
polaris_service:
# 设置为true代表启用自动注册
enable_register: true
# 填入数据库地址,用于获取当前节点ip信息
probe_address: ##数据库地址##
假如北极星集群管理的注册实例数小于 1w 时,可以选择集群部署去 Redis 方案:修改 conf/polaris-server.yaml 里面的 healthcheck 配置,去掉 heartbeatMemory 相关配置,并放开 heartbeatLeader 相关配置。
主从模式
healthcheck:
checkers:
- name: heartbeatLeader
option:
soltNum: # 心跳数据存储分片 map 的分片数
streamNum: # 用于同步心跳数据的 gRPC stream 客户端数,默认为 runtime.GOMAXPROCS(0)
假如北极星集群管理的注册实例数超过 1w 时,推荐集群部署使用 Redis 方案:修改 02-polaris-server-config.yaml 里面的 healthchec 配置,去掉 heartbeatMemory 相关配置,并放开 heartbeatRedis 相关配置。
单节点,主从模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
#填入redis的IP以及端口
kvAddr: ##REDIS_ADDR##
#填入redis的密码
kvPasswd: ##REDIS_PWD##
maxIdle: 200
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
集群模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
deployMode: cluster
addrs:
- "127.0.0.1:7001"
- "127.0.0.1:7002"
- "127.0.0.1:7003"
kvPasswd: "polaris"
poolSize: 233
minIdleConns: 30
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
withTLS: false
哨兵模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
deployMode: sentinel
addrs:
- "127.0.0.1:26379"
- "127.0.0.2:26379"
- "127.0.0.3:26379"
masterName: "my-sentinel-master-name"
sentinelUsername: "sentinel-polaris" # sentinel 客户端的用户名
sentinelPassword: "sentinel-polaris-password" # sentinel 客户端的密码
kvPasswd: "polaris" # redis 客户端的密码
poolSize: 233
minIdleConns: 30
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
withTLS: false
启动polaris-server:
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的监听地址
polarisServer:
address: "${polaris-server的IP地址}:8090"
启动polaris-console:
bash ./tool/start.sh
安装可选功能
安装监控组件
下载软件包:点击下载链接,下载prometheus版本,解压后进入prometheus-2.28.0.linux-amd64目录中。
修改prometheus配置:打开 prometheus.yml文件,修改prometheus的job配置,增加http_sd_configs,其作用是告知prometheus需要从北极星获取应用的监控上报的地址。
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
http_sd_configs:
- url: http://${polaris的IP地址}:8090/prometheus/v1/clients
honor_labels: true
启动prometheus:
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的监听地址。
monitorServer:
address: "${prometheus的IP地址}:9090"
重启控制台:进入polaris-console的安装目录,执行以下语句重启。
bash ./tool/stop.sh
bash ./tool/start.sh
假如您的网络环境不支持 prometheus 主动从北极星 SDK 拉取(pull模式)监控指标,则需要部署 pushgateway 组件,同时调整 prometheus.yml 文件添加以下配置
- job_name: 'pushgateway'
static_configs:
- 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 必须保证唯一。
registry:
enable: true
polaris-server-address: { 北极星服务端 grpc 协议地址 }
name: polaris.limiter
namespace: Polaris
health-check-enable: true
api-servers:
- name: http
option:
ip: 0.0.0.0
port: 8100
- name: grpc
option:
ip: 0.0.0.0
port: 8101
limit:
myid: { 服务端节点唯一标识信息,int 类型}
启动polaris-limiter:
bash ./tool/start.sh
bash ./tool/p.sh
使用 K8s 安装
安装服务端
下载软件包:下载polaris-cluster-release_$version.kubernetes.zip,解压后进入polaris-cluster-release_$version.kubernetes目录。
配置数据库参数:修改02-polaris-server-config.yaml里面的store配置,去掉boltdbStore相关配置,并放开defaultStore相关配置。
# 存储配置
store:
# 数据库存储插件
name: defaultStore
option:
master:
dbType: mysql
dbName: polaris_server
dbAddr: ##数据库地址,格式为ip:port##
dbUser: ##数据库用户名##
dbPwd: ##数据库密码##
开启自动注册:修改02-polaris-server-config.yaml里面的服务自注册配置,将enable_register改成true,并填入probe_address:
bootstrap:
polaris_service:
# 设置为true代表启用自动注册
enable_register: true
# 填入数据库地址,用于获取当前节点ip信息
probe_address: ##数据库地址##
假如北极星集群管理的注册实例数小于 1w 时,可以选择集群部署去 Redis 方案:修改 02-polaris-server-config.yaml 里面的 healthcheck 配置,去掉 heartbeatMemory 相关配置,并放开 heartbeatLeader 相关配置。
主从模式
healthcheck:
checkers:
- name: heartbeatLeader
option:
soltNum: # 心跳数据存储分片 map 的分片数
streamNum: # 用于同步心跳数据的 gRPC stream 客户端数,默认为 runtime.GOMAXPROCS(0)
假如北极星集群管理的注册实例数超过 1w 时,推荐集群部署使用 Redis 方案:修改 02-polaris-server-config.yaml 里面的 healthchec 配置,去掉 heartbeatMemory 相关配置,并放开 heartbeatRedis 相关配置。
单节点,主从模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
#填入redis的IP以及端口
kvAddr: ##REDIS_ADDR##
#填入redis的密码
kvPasswd: ##REDIS_PWD##
maxIdle: 200
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
# redis 库,非必选,默认为 0
db: 0
集群模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
deployMode: cluster
addrs:
- "127.0.0.1:7001"
- "127.0.0.1:7002"
- "127.0.0.1:7003"
kvPasswd: "polaris"
poolSize: 233
minIdleConns: 30
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
withTLS: false
# redis 库,非必选,默认为 0
db: 0
哨兵模式
healthcheck:
checkers:
- name: heartbeatRedis
option:
deployMode: sentinel
addrs:
- "127.0.0.1:26379"
- "127.0.0.2:26379"
- "127.0.0.3:26379"
masterName: "my-sentinel-master-name"
sentinelUsername: "sentinel-polaris" # sentinel 客户端的用户名
sentinelPassword: "sentinel-polaris-password" # sentinel 客户端的密码
kvPasswd: "polaris" # redis 客户端的密码
poolSize: 233
minIdleConns: 30
idleTimeout: 120s
connectTimeout: 200ms
msgTimeout: 200ms
concurrency: 200
withTLS: false
# redis 库,非必选,默认为 0
db: 0
执行安装
kubectl create -f 00-polaris-namespace-config.yaml
kubectl create -f 01-polaris-console-config.yaml
kubectl create -f 02-polaris-server-config.yaml
kubectl create -f 03-polaris-server.yaml
安装可选功能
安装监控组件
kubectl create -f 04-prometheus.yaml
修改polaris-console-config的ConfigMap,修改monitorServer的地址,将原来的127.0.0.1:9090替换成prometheus的K8S服务域名。
monitorServer:
address: "${prometheus的服务域名}:9090"
假如您的网络环境不支持 prometheus 主动从北极星 SDK 拉取(pull模式)监控指标,则需要部署 pushgateway 组件,同时调整 prometheus.yml 文件添加以下配置
- job_name: 'pushgateway'
static_configs:
- targets: ['${pushgateway 服务端IP}:9091']
安装分布式限流组件
kubectl create -f 05-polaris-limiter-config.yaml
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.db
和 polaris.storaate.redis
的地址信息。 确保您的
mysql 已经使用下面的命令初始化了。
mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/polaris_server.sql
设置好后,使用下面的命令安装 chart:
$ cd deploy/helm
$ helm install ${release_name} .
假如您的网络环境不支持 prometheus 主动从北极星 SDK 拉取(pull模式)监控指标,则需要部署 pushgateway 组件,同时调整 prometheus.yml 文件添加以下配置
- job_name: 'pushgateway'
static_configs:
- targets: ['${pushgateway 服务端IP}:9091']
检查安装
部署后可以通过以下命令观察到 pod 正常运行:
$ kubectl get po -n polaris-system
NAME READY STATUS RESTARTS AGE
polaris-0 2/2 Running 0 2m44s
polaris-prometheus-6cd7cd5fc6-gqtcz 2/2 Running 0 2m44s
如果您在 values.yaml
中配置了 service.type
为 LoadBalancer
则可以使用 polaris 的 service 的 EXTERNAL-IP
:webPort 访问到北极星的页面。 如果您的k8s 集群不支持 LoadBalancer
,可以将 service.type
为 NodePort
,通过 nodeip:nodeport 访问。
配置项说明
参数名 | 参数解释 |
---|---|
global.mode | 集群类型,支持 cluter 和 standalone ,表示集群版和单机版 |
polaris.image.repository | polaris-server 镜像仓库地址 |
polaris.image.tag | polaris-server 镜像 tag |
polaris.image.pullPolicy | polaris-server 镜像拉取策略 |
polaris.limit.cpu | polaris-server cpu资源占用限制 |
polaris.limit.memory | polaris-server 内存资源占用限制 |
polaris.console.image.repository | polaris-console 的镜像仓库地址 |
polaris.console.image.tag | polaris-console 镜像 tag |
polaris.console.image.pullPolicy | polaris-console 镜像拉取策略 |
polaris.console.limit.cpu | polaris-console cpu资源占用限制 |
polaris.console.limit.memory | polaris-console 内存资源占用限制 |
polaris.replicaCount | polaris 副本数 |
polaris.storage.db.address | polaris 集群版,使用的 mysql 的地址 |
polaris.storage.db.name | polaris 集群版,使用的 mysql 的 database 名 |
polaris.storage.db.user | polaris 集群版,使用的 mysql 的用户名 |
polaris.storage.db.password | polaris 集群版,使用的 mysql 的密码 |
polaris.storage.redis.address | polaris 集群版,使用的 redis 的地址 |
polaris.storage.redis.password | polaris 集群版,使用的 redis 的密码 |
polaris.storage.service.type | polaris service 的类型 |
polaris.storage.service.httpPort | polaris service 暴露,polaris-server 监听的 http 端口 |
polaris.storage.service.grpcPort | polaris service 暴露,polaris-server 监听的 grpc 端口 |
polaris.storage.service.webPort | polaris service 暴露,polaris-server 监听的 web 端口 |
polaris.auth.consoleOpen | polaris 打开控制台接口鉴权,默认开启 |
polaris.auth.clientOpen | polaris 打开客户端接口鉴权,默认关闭 |
monitor.port | 客户端上报监控信息的端口 |
installation.namespace | 部署polaris组件所在的namespace |
安装后验证
登录控制台的默认登录账户信息。
用户:polaris
密码:polaris
访问http://{控制台IP}:8080
,可以看到登录页面,登录后可以成功看到北极星服务治理控制台内容。
执行以下命令,查看 polaris.limiter 服务下的实例信息,是否包含限流服务。
curl --location --request POST '127.0.0.1:8090/v1/Discover' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": 1,
"service": {
"name": "polaris.limiter",
"namespace": "Polaris"
}
}'
可选 开启二次寻址
在大规模集群(百万级别服务)场景下,可对对北极星按照功能模块进行集群拆分,注册发现、健康检查、控制台操作划分为不同集群来进行处理,各集群相互独立,可按照请求量独立扩展。客户端通过埋点集群的二次寻址机制,为接口寻址到目标集群进行功能接口的调用。
服务端配置
注册发现集群的 polaris-server.yaml 配置文件修改
开启服务端自动注册 polaris.discover 服务
bootstrap:
polaris_service:
probe_address: ##数据库地址,格式为ip:port##
enable_register: true
isolated: false
services:
- name: polaris.discover
protocols:
- service-grpc
关闭健康检查客户端接口
apiservers:
- name: service-grpc
option:
listenIP: "0.0.0.0"
listenPort: 8091
connLimit:
openConnLimit: false
maxConnPerHost: 128
maxConnLimit: 5120
enableCacheProto: true
sizeCacheProto: 128
tls:
certFile: ""
keyFile: ""
trustedCAFile: ""
api:
client:
enable: true
include: [discover, register]
健康检查集群的 polaris-server.yaml 配置文件修改
开启服务端自动注册 polaris.healthcheck 服务
bootstrap:
polaris_service:
probe_address: ##数据库地址,格式为ip:port##
enable_register: true
isolated: false
services:
- name: polaris.healthcheck
protocols:
- service-grpc
- name: polaris.checker
protocols:
- service-grpc
只开放健康检查客户端接口
apiservers:
- name: service-grpc
option:
listenIP: "0.0.0.0"
listenPort: 8091
connLimit:
openConnLimit: false
maxConnPerHost: 128
maxConnLimit: 5120
enableCacheProto: true
sizeCacheProto: 128
tls:
certFile: ""
keyFile: ""
trustedCAFile: ""
api:
client:
enable: true
include: [healthcheck]
修改完 polaris-server.yaml 配置之后,重启服务端节点即可