IM开源项目OpenIM集群(非k8s)部署文档-生产环境可参考

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

以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)

(一)单聊压测数据:

同时在线及压测客户端数量:1万

每秒钟发送消息量:2300条;

从发送到对方接收平均消息延时:5秒

(二)群聊压测数据:

群成员数量:1万人

同时在线人数:1千人

每秒发送消息量:500条;

从发送到对方接收平均消息延时: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 

关于OpenIM

OpenIM是由IM技术专家打造开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时通讯、实时通讯能力快速集成到自身应用中,并确保业务数据的安全性和私密性。github社区活跃,star近万,排名遥遥领先,开发者万人,OpenM力争开源IM项目No1,打造开源IM第一社区。OpenIM是也是目前非常受欢迎的开源IM项目,广泛用于政企协同办公场景。

github地址:https://github.com/OpenIMSDK/Open-IM-Server

开发者中心:https://doc.rentsoft.cn/#/

平台支持:Android iOS Uniapp Flutter Electron Web reactNative等几乎所有平台

pc支持信创环境:银河麒麟 UOS等;

群组支持:十万群成员的超级大群

安卓基于自启动-保活机制


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;

    }
}

  1 



展开阅读全文

页面更新:2024-04-07

标签:集群   副本   开发者   分区   组件   进程   消息   文档   建议   环境   服务器   项目   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top