Sign inSign up

jiangjiali/kbengine

By jiangjiali

•Updated over 1 year ago

Image
0

83

jiangjiali/kbengine repository overview

⁠kbengine运行环境

使用ubuntu18.04构建

Dockerfile文件内容

FROM ubuntu:18.04

ENV UID=999 \
# 组名
	GROUP_NAME=jiangjiali \
# 用户名
	USER_NAME=jiangjiali \
# 运行端口
	PORT_TCP=20013 \
	PORT_UDP=20015 \
# 环境变量
	KBE_DT=10s \
	KBE_ROOT=/var/lib/kbengine

ENV KBE_RES_PATH $KBE_ROOT/kbe/res/:$KBE_ROOT/assets:$KBE_ROOT/assets/res/:$KBE_ROOT/assets/scripts/
ENV KBE_BIN_PATH $KBE_ROOT/kbe/bin/server

# 添加脚本
ADD *.sh /

RUN set -eux; \
# 首先添加我们的用户和组,以确保它们的id得到一致的分配,而不管添加了什么依赖项
	groupadd --gid $UID --system $GROUP_NAME; \
	useradd --uid $UID --system --gid $GROUP_NAME --home-dir $KBE_ROOT $USER_NAME; \
	mkdir -p $KBE_ROOT; \
	chown -R $USER_NAME:$GROUP_NAME $KBE_ROOT; \
# 添加源地址
	sed -i 's/archive.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list; \
	sed -i 's/security.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list; \
# 更新系统
	apt-get update; \
	apt-get upgrade -y; \
# 安装基础工具
	apt-get install -y --no-install-recommends \
	libmysqlclient-dev \
	tzdata \
	telnet \
	; \
	rm -rf /var/lib/apt/lists/*; \
# 清除系统缓存
	apt clean; \
	apt autoremove --purge; \
# 内核优化
	echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf; \
	echo "net.ipv4.conf.default.rp_filter = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.conf.default.accept_source_route = 0" >> /etc/sysctl.conf; \
	echo "kernel.sysrq = 0" >> /etc/sysctl.conf; \
	echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf; \
	echo "kernel.msgmnb = 65536" >> /etc/sysctl.conf; \
	echo "kernel.msgmax = 65536" >> /etc/sysctl.conf; \
	echo "kernel.shmmax = 68719476736" >> /etc/sysctl.conf; \
	echo "kernel.shmall = 4294967296" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_max_tw_buckets = 6000" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_sack = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_rmem = 4096 87380 4194304" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_wmem = 4096 16384 4194304" >> /etc/sysctl.conf; \
	echo "net.core.somaxconn = 262144" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_max_syn_backlog = 262144" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_fin_timeout = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.tcp_keepalive_time = 1200" >> /etc/sysctl.conf; \
	echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf; \
	echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf; \
	echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf; \
	echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf; \
	echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf; \
	echo "net.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf; \
	echo "fs.file-max=6815744" >> /etc/sysctl.conf; \
	echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf; \
	echo "debug.exception-trace = 0" >> /etc/sysctl.conf; \
	echo "debug.kprobes-optimization = 0" >> /etc/sysctl.conf; \
	sysctl -p; \
# 安全限制优化
	echo "* soft memlock unlimited" >> /etc/security/limits.conf; \
	echo "* hard memlock unlimited" >> /etc/security/limits.conf; \
	echo "* soft core unlimited" >> /etc/security/limits.conf; \
	echo "* hard core unlimited" >> /etc/security/limits.conf; \
	echo "* soft nproc 1000000" >> /etc/security/limits.conf; \
	echo "* hard nproc 1000000" >> /etc/security/limits.conf; \
	echo "* soft nofile 1000000" >> /etc/security/limits.conf; \
	echo "* hard nofile 1000000" >> /etc/security/limits.conf; \
	echo "* soft memlock 32000" >> /etc/security/limits.conf; \
	echo "* hard memlock 32000" >> /etc/security/limits.conf; \
	echo "* soft msgqueue 8192000" >> /etc/security/limits.conf; \
	echo "* hard msgqueue 8192000" >> /etc/security/limits.conf; \
# 脚本权限
	chmod 777 /start.sh

# 服务器脚本和资源挂载目录
VOLUME ["$KBE_ROOT"]

# 设置工作目录
WORKDIR $KBE_ROOT/assets

# 映射端口
EXPOSE $PORT_TCP
EXPOSE $PORT_UDP

CMD /start.sh

start.sh文件内容

#!/bin/bash
echo KBE_DT = \"${KBE_DT}\"
echo KBE_ROOT = \"${KBE_ROOT}\"
echo KBE_RES_PATH = \"${KBE_RES_PATH}\"
echo KBE_BIN_PATH = \"${KBE_BIN_PATH}\"

start(){
        $KBE_BIN_PATH/machine --cid=2129652375332859700 --gus=1&
        $KBE_BIN_PATH/logger --cid=1129653375331859700 --gus=2&
        $KBE_BIN_PATH/interfaces --cid=1129652375332859700 --gus=3&
        $KBE_BIN_PATH/dbmgr --cid=3129652375332859700 --gus=4&
        $KBE_BIN_PATH/baseappmgr --cid=4129652375332859700 --gus=5&
        $KBE_BIN_PATH/cellappmgr --cid=5129652375332859700 --gus=6&
        $KBE_BIN_PATH/baseapp --cid=6129652375332859700 --gus=7&
        $KBE_BIN_PATH/cellapp --cid=7129652375332859700 --gus=8&
        $KBE_BIN_PATH/loginapp --cid=8129652375332859700 --gus=9
}

stop(){
        pkill -9 machine>/dev/null
        pkill -9 logger>/dev/null
        pkill -9 interfaces>/dev/null
        pkill -9 dbmgr>/dev/null
        pkill -9 baseappmgr>/dev/null
        pkill -9 cellappmgr>/dev/null
        pkill -9 baseapp>/dev/null
        pkill -9 cellapp>/dev/null
        pkill -9 loginapp>/dev/null
}

while true; do
        stop
        sleep $KBE_DT
        start
        echo 'BaseApp is Unexpected Exit!!!!!'
done

⁠管理服务器

# 关闭
docker exec -it kbe /bin/bash
cd /var/lib/kbengine/assets/ && ./safa_kill.sh && exit
docker stop kbe

# 重启
docker exec -it kbe /bin/bash
cd /var/lib/kbengine/assets/ && ./safa_kill.sh && ./start_server.sh

⁠注意

# 修改/var/kbe/assets/res/server/kbengine.xml
<baseapp>
	<backupPeriod> 500 </backupPeriod>
	<externalAddress> 服务器地址 </externalAddress>
</baseapp>

Tag summary

Content type

Image

Digest

sha256:cdfbb1a41…

Size

38.5 MB

Last updated

over 1 year ago

docker pull jiangjiali/kbengine:1.0.0