OpenIM集群(非k8s)部署文档

自行部署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-ttl6.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;

  }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容