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-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;
}
}
OpenIM集群(非k8s)部署文档的更多相关文章
- NVIDIA-GPU归入K8S集群管理的安装文档--第二版
一,nvidia K80驱动安装 1, 查看服务器上的Nvidia(英伟达)显卡信息,命令lspci |grep NVIDIA 2, 按下来,进行显卡驱动程序的安装,驱动程序可到nvidia的官网 ...
- 如何诊断 11.2 集群节点驱逐问题 (文档 ID 1674872.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 到 11.2.0.2 [发行版 11.2]本文档所含信息适用于所有平台 用途 这篇文档提 ...
- Elasticsearch 使用集群 - 创建和查询文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Greenplum/Deepgreen(集群/分布式)安装文档
Deepgreen分布式安装文档 环境准备 1.安装VMware虚拟机软件,然后在VMware安装三台Linux虚拟机(使用centos7版本) 2.使用的虚拟机如下: 192.168.136.155 ...
- Ubuntu下搭建Kubernetes集群(3)--k8s部署
1. 关闭swap并关闭防火墙 首先,我们需要先关闭swap和防火墙,否则在安装Kubernetes时会导致不成功: # 临时关闭 swapoff -a # 编辑/etc/fstab,注释掉包含swa ...
- RHEL 集群(RHCS)配置小记 -- 文档记录
1.RHEL 6 集群配置官方管理手册 https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/pd ...
- Hadoop 集群搭建和维护文档
一.前言 -- 基础环境准备 节点名称 IP NN DN JNN ZKFC ZK RM NM Master Worker master1 192.168.8.106 * * * * * * maste ...
- [k8s]zookeeper集群在k8s的搭建(statefulset模式)-pod的调度
之前一直docker-compose跑zk集群,现在把它挪到k8s集群里. docker-compose跑zk集群 zk集群in k8s部署 参考: https://github.com/kubern ...
- HP DL160 Gen9服务器集群部署文档
HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server Memo ...
- Redis集群部署文档(Ubuntu15.10系统)
Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...
随机推荐
- 朋友们,就在今天,JDK 21,它终于带着重磅新特性正式发布了!
你好呀,我是歪歪. 朋友们,好消息,好消息,重磅好消息. 从今年年初就一直在喊的具有革命性.未来性.开创新纪元的 JDK 21 按照官方的时间计划表,今天终于是要正式 GA 了: https://op ...
- Kubernetes(K8S) 监控 Prometheus + Grafana
监控指标 集群监控 节点资源利用率 节点数 运行Pods Pod 监控 容器指标 应用程序 Prometheus 开源的 监控.报警.数据库 以HTTP协议周期性抓取被监控组件状态 不需要复杂的集成过 ...
- Intellij IDEA 集成 Docker 发布
1. Docker开启远程访问,注意端口不要用默认的,防止被攻击 [root@localhost ~]# vi /usr/lib/systemd/system/docker.service 修改 # ...
- Nginx--安装模块
一 安装系统自带模块 #进入安装目录[root@localhost ~]# cd nginx-1.18.0/#查看原来的编译选项 [root@localhost nginx-1.18.0]# ngin ...
- 遇到 Request header is too large,你是如何解决的?
看到群里有小伙伴问,这个异常要怎么解决: java.lang.IllegalArgumentException: Request header is too large 异常原因 根据Exceptio ...
- 【Vue CLI】手把手教你撸插件
本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/Rl8XLUX7isjXNUmbw0-wow作者:ZhuPing 现如今 Vue 作为主流的前端框 ...
- 五、java操作redis
系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis --demo主方法 package com. ...
- S3C2440移植uboot之支持NORFLASH
上节S3C2440移植uboot之支持NAND启动修改了代码支持了NAND启动.这节我们分析uboo使其支持NORFLASH的操作. 目录 1.分析启动错误 2.修改代码 3.在匹配数组中添加我们 ...
- vue 路由跳转页面不刷新
vue 路由跳转页面不刷新 点击打开视频讲解地址在router-view 里边添加 :key="$route.fullPath"
- 完全免费白嫖 GPT-4 的终极方案!
原文链接:https://icloudnative.io/posts/completely-free-to-use-gpt4/ GPT-4 目前是世界上最强的多模态大模型,能力甩 GPT-3.5 好几 ...