OpenIM集群(非k8s)部署文档

举报
OpenIM 发表于 2022/09/08 15:31:56 2022/09/08
【摘要】 自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求。以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)(一)单聊压测数据:1.1 同时在线及压测客户端数量:1万1.2 每秒钟发送消息量:2300条;1.3 从发送到对方接收平均消息延时:5秒(二)群聊压测数据:2.1 群成员数量:1万人2.2 同时在...

自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求。

以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)(一)单聊压测数据:1.1 同时在线及压测客户端数量:1万1.2 每秒钟发送消息量:2300条;1.3 从发送到对方接收平均消息延时:5秒(二)群聊压测数据:2.1 群成员数量:1万人2.2 同时在线人数:1千人2.3 每秒发送消息量:500条;2.4 从发送到对方接收平均消息延时:6秒

组件集群说明

组件 说明 版本
etcd 建议三台,可复用 3.5.0
zookeeper 建议三台,可复用 3.7.1
mysql 主从两条,可复用 5.7
kafka 建议三台,可复用。以2台8核16G IM Server为例说明topic分区设置,"ws2ms_chat"  8分区,"msg_to_mongo" 8分区,"ms2ps_chat" 10分区 3.2.0
mongo 建议2台以上,可复用。每个cache限制0.5G;多个数据分片副本集,1个mongos副本集,1个config副本集 5.0
redis 建议2台以上,可复用。每个内存限制10G, 淘汰策略volatile-ttl 6.2.5



IM Server集群部署

(1)下载代码及编译

git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
cd Open-IM-server/script
chmod +x *.sh
./batch_build_all_service.sh
出现all services build success表示所有模块编译成功

(2)修改组件信息

kafka:
ws2mschat:
  addr: [ 127.0.0.1:9092, 127.0.0.2:9092, 127.0.0.3:9092 ] #
  topic: "ws2ms_chat" open_im_msg写入,open_im_msg_transfer消费后新消息入库redis和kafka "msg_to_mongo" 、 "ms2ps_chat"
ws2mschatoffline:
  addr: [ 127.0.0.1:9092, 127.0.0.2:9092, 127.0.0.3:9092 ] #kafka配置,默认即可
  topic: "ws2ms_chat_offline" 不再使用
msgtomongo:
  addr: [ 127.0.0.1:9092, 127.0.0.2:9092, 127.0.0.3:9092 ] #kafka配置,默认即可
  topic: "msg_to_mongo" open_im_msg_transfer消费历史消息入库mongo
ms2pschat:
  addr: [ 127.0.0.1:9092, 127.0.0.2:9092, 127.0.0.3:9092 ] #kafka配置,默认即可
  topic: "ms2ps_chat" open_im_push消费,推送消息到open_im_msg_gateway

etcd:
etcdSchema: openim #默认即可
etcdAddr: [ 127.0.0.1:2379, 127.0.0.2:2379, 127.0.0.3:2379] #etcd集群

mysql:
dbMysqlAddress: [ 127.0.0.1:13306, 127.0.0.2:13306] #mysql主备
 
mongo:
dbAddress: [127.0.0.1:37017, 127.0.0.2:37017, 127.0.0.3:37017] #使用分片集群时为mongos地址

redis:
dbAddress: [ 127.0.0.1:16379, 127.0.0.2:16379, 127.0.0.3:16379 ] #redis集群
 
rpcRegisterIP:#不要填写

(3)调整进程数

open_im_msg 6个,open_im_push 5个

openImMessagePort: [ 10130, 10131, 10132, 10133, 10134,10135 ] #open_im_msg 配置6个端口则启动6个进程
openImPushPort: [ 10170, 10171, 10172, 10173, 10174 ] #open_im_push 配置5个端口则启动5个进程

open_im_msg_transfer 4个

修改script/path_info.cfg
msg_transfer_name="open_im_msg_transfer"
msg_transfer_binary_root="../bin/"
msg_transfer_source_root="../cmd/open_im_msg_transfer/"
msg_transfer_service_num=4

(4)复制Open-IM-Server到其他服务器

scp -r Open-IM-Server root@127.0.0.2:/data

(5)启动

cd script
./start_all.sh


nginx配置示例

https/wss配置;负载均衡配置;以IM Server两台 127.0.0.1 127.0.0.2 , nginx部署在其他服务器为例。

注意域名 替换ip 域名以及证书

upstream msg_gatway_imserver{      
      server 127.0.0.1:10001;      
      server 127.0.0.2:10001;        
  }

upstream api_imserver{      
      server 127.0.0.1:10002;        
      server 127.0.0.2:10002;        
  }

upstream jssdk_imserver{      
      server 127.0.0.1:10003;        
      server 127.0.0.2:10003;        
  }


upstream demo_imserver{      
      server 127.0.0.1:10004;        
      server 127.0.0.2:10004;        
  }

upstream cms_imserver{      
      server 127.0.0.1:10006;        
      server 127.0.0.2:10006;        
  }

server {
      listen 443;
      server_name open-im-online.rentsoft.cn;

      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;

      ssl_session_timeout 5m;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

      error_page 405 =200 $uri;
      location / {
              proxy_set_header Host $host;
              proxy_set_header X-Real-Ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_set_header X-NginX-Proxy true;
              root /data/online/Pc-Web-Demo/build/;
              index index.html;
              try_files $uri $uri/ /index.html;
      }
location /admin {
              proxy_set_header Host $host;
              proxy_set_header X-Real-Ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;

              proxy_set_header X-NginX-Proxy true;
# root /data/online/Open-IM-Admin/build/;
alias /data/online/Open-IM-Admin/build/;
              index index.html;
              try_files $uri $uri/admin/ /admin/index.html;
      }
}
server {
      listen 80;
      server_name open-im-online.rentsoft.cn;
      rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
      listen 10001;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";
      location / {
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "Upgrade";
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_pass http://msg_gatway_imserver;
          }
}


server {
      listen 10002;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";

      location / {
proxy_http_version 1.1;
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_pass http://api_imserver;
      }


}


server {
      listen 10003;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";
      location / {
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "Upgrade";
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://jssdk_imserver;
      }
}


server {
      listen 10004;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";
      location / {
   proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "Upgrade";
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_pass http://demo_imserver;
      }


}


server {
      listen 10006;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";
      location / {
   proxy_http_version 1.1;
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_pass http://cms_imserver;
      }
}




server {
      listen 7880;
      server_name open-im-online.rentsoft.cn;
      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/open-im-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";
      location / {
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "Upgrade";
              proxy_set_header X-real-ip $remote_addr;
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_pass http://127.0.0.1:7880;
      }
}




upstream storage {
  server 127.0.0.1:10005;
}

server {
#     listen 443;
  #     server_name storage-online.rentsoft.cn;
  #   ssl on
    #   ssl_certificate /etc/nginx/conf.d/ssl/storage-online.rentsoft.cn_bundle.crt;
    # ssl_certificate_key /etc/nginx/conf.d/ssl/storage-online.rentsoft.cn.key;
      ssl_session_timeout 5m;

listen 443;
      server_name storage-online.rentsoft.cn;

      ssl on;
      ssl_certificate /etc/nginx/conf.d/ssl/storage-online.rentsoft.cn_nginx/storage-online.rentsoft.cn_bundle.crt;
      ssl_certificate_key /etc/nginx/conf.d/ssl/storage-online.rentsoft.cn_nginx/storage-online.rentsoft.cn.key;


      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_comp_level 2;
      gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";

  location / {
          proxy_pass http://127.0.0.1:10005/;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Host $http_host;
          proxy_http_version 1.1;
          client_max_body_size 8000M;

  }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。