更新时间:2024-09-25 18:26:16

1 ECeph扩容

该章节仅针对eceph融合部署场景,独立部署请参考对象存储独立部署及升级手册
注意:若ECeph集群有更换证书需求,可在eceph配置块下tls部分进行更新。需要将数字证书和证书密钥经过base64编码之后填入(记得去掉换行符)。
cat 数字证书.crt | base64 | tr -d '\n'
cat 证书密钥.key | base64 | tr -d '\n'

  1. 获取配置,执行:proton-cli get conf > cluster.yaml
  2. 编辑配置文件,编辑后保存(配置文件示例如下)
  3. 进入安装包解压目录,执行扩容:proton-cli apply -f cluster.yaml
  4. 扩容后确认eceph服务,执行:kubectl get pod -n anyshare | grep eceph
# 注:
# 1、该配置文件仅为示例说明,最终以实际环境中获取到的配置为准,配置文件中不涉及修改的组件无需关注
# 2、配置文件中节点ip、内部ip(若未使用内部ip,无需加上internal_ip这行配置)、hostmname信息请根据实际环境填写
# 3、单节点单master环境中数据服务均为单副本,扩容到三节点三master后,服务副本数与全新部署的三节点环境保持一致(nebula除外)
# 4、各服务hosts列表中的节点名称必须包含在nodes列表内
# 5、opensearch不扩容,proton-etcd、zookeeper之后单独执行扩容
# 6、若获取到的配置文件中不存在grafana和prometheus,则忽略这两个组件的修改
 
apiVersion: v1
nodes:
- internal_ip: 11.0.0.4
  ip4: 10.3.91.101
  name: node-91-101
- internal_ip: 11.0.0.29     
  ip4: 10.3.91.102
  name: node-91-102
- internal_ip: 11.0.0.30     
  ip4: 10.3.91.103
  name: node-91-103
cms: {}
cr:
  local:
    ha_ports:
      chartmuseum: 15001
      cr_manager: 15002
      registry: 15000
      rpm: 15003
    hosts:
    - node-91-101
    - node-91-102    
    ports:
      chartmuseum: 5001
      cr_manager: 5002
      registry: 5000
      rpm: 5003
    storage: /sysvol/proton_data/cr_data
cs:
  addons:
  - node-exporter
  - kube-state-metrics
  cs_controller_dir: ./service-package
  docker_data_dir: /sysvol/proton_data/cs_docker_data
  etcd_data_dir: /sysvol/proton_data/cs_etcd_data
  ha_port: 16643
  host_network:
    bip: 172.33.0.1/16
    pod_network_cidr: 192.169.0.0/16
    service_cidr: 10.96.0.0/12
  ipFamilies:
  - IPv4
  master:
  - node-91-101
  - node-91-102     
  - node-91-103
  provisioner: local
installer_service: {}
grafana:
  data_path: /sysvol/grafana
  hosts:
  - node-91-101
  resources:
    limits:
      cpu: "1"
      memory: 3Gi
    requests:
      cpu: 500m
      memory: 2Gi
kafka:
  data_path: /sysvol/kafka/kafka_data
  env: null
  hosts:
  - node-91-101
  - node-91-102     
  - node-91-103
  resources:
    limits:
      cpu: "1"
      memory: 2Gi
    requests:
      cpu: 500m
      memory: 1Gi
nebula:
  data_path: /sysvol/nebula
  graphd: {}
  hosts:
  - node-91-101
  metad: {}
  password: ffa3b5b81a1344ac202f078e
  storaged: {}
opensearch:
  config:
    hanlpRemoteextDict: http://ecoconfig-private.anyshare:32128/api/ecoconfig/v1/word-list/remote_ext_dict
    jvmOptions: -Xmx8g -Xms8g
  data_path: /anyshare/opensearch
  hosts:
  - node-91-101
  mode: master
  resources:
    limits:
      cpu: "8"
      memory: 40Gi
    requests:
      cpu: "1"
      memory: 2Gi
  settings:
    action.auto_create_index: -company*,+*
    bootstrap.memory_lock: false
    cluster.routing.allocation.disk.watermark.flood_stage: 70%
    cluster.routing.allocation.disk.watermark.high: 65%
    cluster.routing.allocation.disk.watermark.low: 60%
prometheus:
  data_path: /sysvol/prometheus
  hosts:
  - node-91-101
  - node-91-102      
  resources:
    limits:
      cpu: "1"
      memory: 3Gi
    requests:
      cpu: 500m
      memory: 2Gi
proton_etcd:
  data_path: /sysvol/proton-etcd/proton-etcd_data
  hosts:
  - node-91-101
proton_mariadb:
  admin_passwd: eisoo.com123
  admin_user: root
  config:
    innodb_buffer_pool_size: 8G
    resource_limits_memory: 24G
    resource_requests_memory: 24G
  data_path: /sysvol/mariadb
  hosts:
  - node-91-101
  - node-91-102      
  - node-91-103
proton_mongodb:
  admin_passwd: eisoo.com123
  admin_user: root
  data_path: /sysvol/mongodb/mongodb_data
  hosts:
  - node-91-101
  - node-91-102      
  - node-91-103
proton_mq_nsq:
  data_path: /sysvol/mq-nsq/mq-nsq_data
  hosts:
  - node-91-101
  - node-91-102      
  - node-91-103
proton_policy_engine:
  data_path: /sysvol/policy-engine/policy-engine_data
  hosts:
  - node-91-101
  - node-91-102      
  - node-91-103
proton_redis:
  admin_passwd: eisoo.com123
  admin_user: root
  data_path: /sysvol/redis/redis_data
  hosts:
  - node-91-101
  - node-91-102     
  - node-91-103
resource_connect_info:
  etcd:
    hosts: proton-etcd.resource
    port: 2379
    secret: etcdssl-secret
    source_type: internal
  mongodb:
    auth_source: anyshare
hosts: mongodb-mongodb-0.mongodb-mongodb.resource,mongodb-mongodb-1.mongodb-mongodb.resource,mongodb-mongodb-2.mongodb-mongodb.resource
    password: eisoo.com123
    port: 28000
    replica_set: rs0
    source_type: internal
    username: anyshare
  mq:
    mq_hosts: proton-mq-nsq-nsqd.resource
    mq_lookupd_hosts: proton-mq-nsq-nsqlookupd.resource
    mq_lookupd_port: 4161
    mq_port: 4151
    mq_type: nsq
    source_type: internal
  opensearch:
    hosts: opensearch-master.resource
    password: eisoo.com123
    port: 9200
    protocol: http
    source_type: internal
    username: admin
    version: 7.10.0
  policy_engine:
    hosts: proton-policy-engine-proton-policy-engine-cluster.resource
    port: 9800
    source_type: internal
  rds:
    hosts: mariadb-mariadb-master.resource
    hosts_read: mariadb-mariadb-cluster.resource
    password: eisoo.com123
    port: 3330
    port_read: 3330
    rds_type: MariaDB
    source_type: internal
    username: anyshare
  redis:
    connect_type: sentinel
    master_group_name: mymaster
    password: eisoo.com123
    sentinel_hosts: proton-redis-proton-redis-sentinel.resource
    sentinel_password: eisoo.com123
    sentinel_port: 26379
    sentinel_username: root
    source_type: internal
    username: root
zookeeper:
  data_path: /sysvol/zookeeper/zookeeper_data
  env: null
  hosts:
  - node-91-101
  resources:
    limits:
      cpu: "1"
      memory: 2Gi
    requests:
      cpu: 500m
      memory: 1Gi
eceph:
  hosts:   #Eceph部署节点
  - node-91-101
  - node-91-102      # 新增Eceph节点
  - node-91-103       # 新增Eceph节点
  keepalived:
external: 10.3.91.105/24  #与节点ip同网段,且未被占用
internal: 11.0.0.168/24   #与内部ip同网段,且未被占用
  tls:
    certificate-data:  *** #该字段为加密内容,手册中***代替加密内容,此处内容不用修改
    key-data:  ***      #该字段为加密内容,手册中***代替加密内容,此处内容不用修改
    secret: eceph-2024-01-08-09-54-54    #此处内容为示例内容,不用修改

1.1 扩容结果确认

查看eceph服务状态.png

第1步 若使用了内部ip地址,需将内部地址加入防火墙规则,执行:firewall-cmd --add-rich-rule="rule family="ipv4" source address="<内部IP>" accept"; firewall-cmd --add-rich-rule="rule family="ipv4" source address="<内部IP>" accept" --permanent
第2步 登录eceph控制台,添加节点,依次将扩容的节点加入(依次添加节点时需要等待一个节点添加完成后再加入下一个,可刷新页面查看当前节点添加是否完成)

第2步 登录eceph控制台,添加节点,依次将扩容的节点加入(依次添加节点时需要等待一个节点添加完成后再加入下一个,可刷新页面查看当前节点添加是否完成)

eceph添加节点.png

添加eceph节点2.png

添加eceph节点完成.png

第3步 将新加入的节点的磁盘加入到保护域

添加保护域.png

添加保护域2.png

第4步 修改对象存储信息,登录部署工作台,进入【数据湖】--【对象存储】,将服务器地址修改为vip(proton-cli get conf获取到的配置中eceph的ivip或ovip),图中示例为内部vip:

修改对象存储信息.png

修改对象存储信息2.png

2 OSS网关扩容

2.1 OSSGateway数据服务扩容

第1步 运行kubectl get nodes --show-labels,查看所有节点的labels信息。其中OSSGateway数据服务所有节点需要有ossgateway/ossgateway-{bucket}=OSSGateway的标签

查看lab信息.png

第2步 扩容数据服务,需要在其他新添加的节点上增加对应的标签,命令如下:kubectl label nodes {nodename} ossgateway/ossgateway-{bucket}=OSSGateway

添加标签.png

第3步 查看数据服务是否扩容成功:kubectl get pods -n anyshare | grep ossgateway

查看扩容结果.png

2.2 OSSGateway管理服务扩容

第1步 执行命令:kubectl -n anyshare scale deploy ossgatewaymanager --replicas=3

扩容副本.png

第2步 查看管理服务是否扩容成功:kubectl get pods -n anyshare | grep ossgatewaymanager

查看扩容结果2.png

2.3 修改cms-release-config-ossgateway配置

第1步 获取cms-release-config-ossgateway配置,执行命令:kubectl get secret cms-release-config-ossgateway -n anyshare -oyaml

获取cms配置.png

第2步 使用base64 -d解码后添加新节点对应的ip信息

获取节点IP.png

第3步 然后重新base64编码,写入cms-release-config-ossgateway,执行命令:kubectl edit secret cms-release-config-ossgateway -n anyshare

base64编码.png

base64编码2.png

2.4 OSSGateway配置更新

第1步 调用如下接口设置内部IP:
curl -X PUT http://kubectl get svc -n anyshare|grep deploy-service|awk '{print $3}':9703/api/deploy-manager/v1/containerized/upmulti-instance-service/OSSGatewayService/
说明:无论接口是否报错,均进行下一步检测配置是否成功

设置内部IP.png

第2步 内部IP设置检查
1)查看redis中mongodb内部地址配置是否正确。
运行如下命令获取所有存储的key:
kubectl exec -c redis proton-redis-proton-redis-0 -n resource -- redis-cli --user root --pass eisoo.com123 -n 0 keys_new /ossgw/*
逐个查看所有存储key下的具体value:
kubectl exec -c redis proton-redis-proton-redis-0 -n resource -- redis-cli --user root --pass eisoo.com123 -n 0 GET {key}

查看所有存储key下的具体value.png

2)查看ossgateway-{bucket}的svc的endpoints配置是否正确。

查看endpoints配置是否正确.png

第3步 查看mongodb数据库配置是否完整,此时sys_config中新启动的数据服务pod没有存储配置信息(依次进入mongodb容器连接mongodb,找到mongodb的primary节点进行操作,下图仅为示例)。

查看mongodb数据库配置是否完整.png

第4步 清除sys_config中的配置并重启ossgateway数据服务

  1. 清除sys_config的命令:db.sys_config.remove({})

    清除sys_config的命令.png

  2. 重启ossgateway数据服务的命令:for i in kubectl get pods -A|grep ossgateway-|awk '{print $2}';do kubectl delete pod $i -n anyshare;done

    重启ossgateway数据服务的命令.png

第5步 界面上修改存储信息,让信息重新写入mongodb:在界面修改存储的IP或者端口(如10002改为10001),保存。有多个存储的话,需要修改多次。修改后查看数据

查看修改后数据.png