JumpServer 集群模式部署

参考资料:准备工作 - JumpServer 文档

准备工作

整体部署说明

环境说明

  • 除 JumpServer 自身组件外,其他组件的高可用请参考对应的官方文档进行部署。
  • 按照此方式部署后,后续只需要根据需要扩容 JumpServer 节点然后添加节点到 HAProxy 即可。
  • 如果已经有 HLB 或者 SLB 可以跳过 HAProxy 部署,第三方 LB 要注意 session 和 websocket 问题。
  • 如果已经有 云存储 (S3/Ceph/Swift/OSS/Azure) 可以跳过 MinIO 部署,MySQL、Redis 也一样。
  • 生产环境中,应该使用 Ceph 等替代 NFS,或者部署高可用的 NFS 防止单点故障。
  • 整个部署环境中,需要关闭防火墙或者开启白名单,保证网络互通

数据库要求

名称

版本

默认字符集

默认字符编码

TLS/SSL

MySQL>= 5.7utf8utf8_general_ci支持
MariaDB>= 10.6utf8mb3utf8mb3_general_ci支持

Name

Version

Sentinel

Cluster

TLS/SSL

Redis>= 6.0支持不支持支持

 服务器要求

服务名称

IP 地址

端口

使用涉及组件/服务

最小化硬件配置

标准化硬件配置

备注

NFS10.0.110.87123Core2Core/8GB RAM/100G HDD4Core/16GB RAM/1T SSD自建,目前存在单节点故障风险,可扩展
MySQLrm-bp1do34u2uo2706di.mysql.rds.aliyuncs.com3306Core2Core/8GB RAM/90G HDD4Core/16GB RAM/1T SSD阿里云RDS
Redis10.0.110.87(从库10.0.110.89)6379Core, Koko, Lion2Core/8GB RAM/90G HDD4Core/16GB RAM/1T SSD自建,主从模式
HAProxy192.168.100.10080,443,2222,33060,33061All2Core/4GB RAM/60G HDD4Core/8GB RAM/60G SSD阿里云SLB
JumpServer 0110.0.110.8780,2222,33060,33061HAProxy2Core/8GB RAM/60G HDD4Core/8GB RAM/90G SSDECS
JumpServer 0210.0.110.8980,2222,33060,33061HAProxy2Core/8GB RAM/60G HDD4Core/8GB RAM/90G SSDECS
JumpServer 03xx.xx.xx.xx80,2222,33060,33061HAProxy2Core/8GB RAM/60G HDD4Core/8GB RAM/90G SSD可扩展
JumpServer 04xx.xx.xx.xx80,2222,33060,33061HAProxy2Core/8GB RAM/60G HDD4Core/8GB RAM/90G SSD可扩展
MinIO120.55.16.24619000,19001Core, KoKo, Lion2Core/4GB RAM/100G HDD4Core/8GB RAM/1T SSD已建,共用线上一套,通过bucket区分
Elasticsearch10.0.110.899200,9300Core, KoKo2Core/4GB RAM/100G HDD4Core/8GB RAM/1T SSD自建,目前存在单节点故障风险,可扩展

 组件容器健康检查

服务名称

健康检查

实例

Corehttp://core:8080/api/health/https://demo.jumpserver.org/api/health/
KoKohttp://koko:5000/koko/health/https://demo.jumpserver.org/koko/health/
Lionhttp://lion:8081/lion/health/https://demo.jumpserver.org/lion/health/

NFS 服务器端安装与配置

# 登录10.0.110.87,安装依赖

yum -y install epel-release

yum -y install nfs-utils rpcbind

# 启动nfs并设置开机自启

systemctl enable rpcbind nfs-server nfs-lock nfs-idmap

systemctl start rpcbind nfs-server nfs-lock nfs-idmap

# 配置nfs

mkdir /data

chmod 777 -R /data

# 设置 NFS 访问权限, /data 是刚才创建的将被共享的目录, 10.0.110.* 表示整个 10.0.110.* 的资产都有括号里面的权限

# 也可以写具体的授权对象 /data 10.0.110.87(rw,sync,no_root_squash) 10.0.110.89(rw,sync,no_root_squash)

cat >> /etc/exports << EOF

/data 10.0.110.*(rw,sync,all_squash,anonuid=0,anongid=0)

EOF

#让exports 配置生效⚓︎

exportfs -a

准备MySql环境

进入阿里云控制台

选择生产环境运维组件的mysql实例,创建账号

创建数据库并授权即可

部署 Redis 服务主从模式

主库10.0.110.87执行以下命令

#编译安装redis6

wget https://download.redis.io/releases/redis-6.2.14.tar.gz

tar -zxvf redis-6.2.14.tar.gz

cd redis-6.2.14

make -j `nproc` && make PREFIX=/opt/redis6/ install

#创建服务目录

cd /opt/redis6

mkdir -p conf data/db var/{logs,run}

#修改配置文件

cat >> /opt/redis6/conf/redis.conf << EOF

daemonize  yes 

bind 0.0.0.0

protected-mode yes

port          6379

pidfile       /opt/redis6/var/run/redis.pid

timeout       86400

tcp-keepalive 0

tcp-backlog   511

unixsocket      /opt/redis6/var/run/redis.sock

unixsocketperm  755

loglevel   notice

logfile    /opt/redis6/var/logs/redis.log

databases  50

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error no

rdbcompression yes

rdbchecksum    yes

dbfilename     dump.rdb

dir            /opt/redis6/data/db

repl-ping-slave-period 10

repl-timeout 60

repl-backlog-size        10MB

repl-backlog-ttl         0

repl-disable-tcp-nodelay no

slave-serve-stale-data   yes

slave-read-only          yes

slave-priority           100

requirepass              DtDream$01Re

maxclients 10000

maxmemory  1GB

maxmemory-policy volatile-lru

appendonly      yes

appendfilename  "appendonly.aof"

appendfsync                   everysec

no-appendfsync-on-rewrite     yes

auto-aof-rewrite-percentage   100

auto-aof-rewrite-min-size     64mb

aof-load-truncated            yes

aof-rewrite-incremental-fsync yes

lua-time-limit 5000

slowlog-log-slower-than  1000

slowlog-max-len          1024

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

lazyfree-lazy-eviction      no

lazyfree-lazy-expire        yes

lazyfree-lazy-server-del    yes

slave-lazy-flush            yes

aof-use-rdb-preamble        yes

EOF

#启动服务

/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf

从库10.0.110.89执行以下命令

#编译安装redis6

wget https://download.redis.io/releases/redis-6.2.14.tar.gz

tar -zxvf redis-6.2.14.tar.gz

cd redis-6.2.14

make -j `nproc` && make PREFIX=/opt/redis6/ install

#创建服务目录

cd /opt/redis6

mkdir -p conf data/db var/{logs,run}

#修改配置文件

cat >> /opt/redis6/conf/redis.conf << EOF

daemonize  yes 

bind 0.0.0.0

protected-mode yes

port          6379

pidfile       /opt/redis6/var/run/redis.pid

timeout       86400

tcp-keepalive 0

tcp-backlog   511

unixsocket      /opt/redis6/var/run/redis.sock

unixsocketperm  755

loglevel   notice

logfile    /opt/redis6/var/logs/redis.log

databases  50

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error no

rdbcompression yes

rdbchecksum    yes

dbfilename     dump.rdb

dir            /opt/redis6/data/db

slaveof 10.0.110.87 6379

repl-ping-slave-period 10

repl-timeout 60

repl-backlog-size        10MB

repl-backlog-ttl         0

repl-disable-tcp-nodelay no

slave-serve-stale-data   yes

slave-read-only          yes

slave-priority           100

requirepass              DtDream$01Re

masterauth               DtDream$01Re

maxclients 10000

maxmemory  1GB

maxmemory-policy volatile-lru

appendonly      yes

appendfilename  "appendonly.aof"

appendfsync                   everysec

no-appendfsync-on-rewrite     yes

auto-aof-rewrite-percentage   100

auto-aof-rewrite-min-size     64mb

aof-load-truncated            yes

aof-rewrite-incremental-fsync yes

lua-time-limit 5000

slowlog-log-slower-than  1000

slowlog-max-len          1024

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

lazyfree-lazy-eviction      no

lazyfree-lazy-expire        yes

lazyfree-lazy-server-del    yes

slave-lazy-flush            yes

aof-use-rdb-preamble        yes

EOF

#启动服务

/opt/redis6/bin/redis-server /opt/redis6/conf/redis.conf

查看主从状态

部署 JumpServer01 节点

# 逻辑挂载数据目录,由于nfs服务和JumpServer01节点同为一台ecs实例,本机使用逻辑挂载

cat >> /etc/fstab << EOF

/data /opt/jumpserver/core/data                                   none    bind            0 0

EOF

mount -a

# 下载 jumpserver-install 软件包

cd /opt

wget https://github.com/jumpserver/installer/releases/download/v3.9.3/jumpserver-installer-v3.9.3.tar.gz

tar -xf jumpserver-installer-v3.9.3.tar.gz

# 修改临时配置文件,更改以下内容

cd jumpserver-installer-v3.9.3

vim config-example.txt

VOLUME_DIR=/opt/jumpserver

# MySQL 配置

DB_HOST=rm-bp1do34u2uo2706di.mysql.rds.aliyuncs.com

DB_PORT=3306

DB_USER=jumpserver

DB_PASSWORD=DtJump@1207!

DB_NAME=jumpserver

# Redis 配置

REDIS_HOST=10.0.110.87

REDIS_PORT=6379

REDIS_PASSWORD=DtDream$01Re

# KoKo Lion 配置

SHARE_ROOM_TYPE=redis

REUSE_CONNECTION=False

#执行脚本安装 JumpServer 服务

./jmsctl.sh install

#启动 JumpServer 节点服务

./jmsctl.sh start

安装过程默认下一步即可,所有参数都已经在config-example.txt提前配置过,安装过程中请务必记录下SECRET_KEY和BOOTSTRAP_TOKEN的值

启动后查看服务状态,均为healthy即可

./jmsctl.sh status

部署 JumpServer 02 节点

# 安装 NFS 依赖包

yum -y install nfs-utils

showmount -e 10.0.110.87

# 挂载 NFS 目录

# 将 Core 持久化目录挂载到 NFS, 默认 /opt/jumpserver/core/data, 请根据实际情况修改

# JumpServer 持久化目录定义相关参数为 VOLUME_DIR, 在安装 JumpServer 过程中会提示

mkdir -p /opt/jumpserver/core/data

mount -t nfs 10.0.110.87:/data /opt/jumpserver/core/data

# 配置 NFS 共享目录开机自动挂载

# 可以写入到 /etc/fstab, 重启自动挂载. 注意: 设置后如果 nfs 损坏或者无法连接该服务器将无法启动

cat >> /etc/fstab << EOF

10.0.110.87:/data /opt/jumpserver/core/data                       nfs     defaults        0 0

EOF

# 下载 jumpserver-install 软件包

cd /opt

wget https://github.com/jumpserver/installer/releases/download/v3.9.3/jumpserver-installer-v3.9.3.tar.gz

tar -xf jumpserver-installer-v3.9.3.tar.gz

cd jumpserver-installer-v3.9.3

# 修改临时配置文件,更改以下内容,注意:SECRET_KEY和BOOTSTRAP_TOKEN必须和节点01保持一致

vim config-example.txt

VOLUME_DIR=/opt/jumpserver

SECRET_KEY=Q0U2Rjk3MTQtNENFRC00RDlGLUI1RTYtMjM3M0ZENkY4RUU5

# MySQL 配置

DB_HOST=rm-bp1do34u2uo2706di.mysql.rds.aliyuncs.com

BOOTSTRAP_TOKEN=Q0U2Rjk3MTQtNENFRC00RDlG

DB_PORT=3306

DB_USER=jumpserver

DB_PASSWORD=DtJump@1207!

DB_NAME=jumpserver

# Redis 配置

REDIS_HOST=10.0.110.87

REDIS_PORT=6379

REDIS_PASSWORD=DtDream$01Re

# KoKo Lion 配置

SHARE_ROOM_TYPE=redis

REUSE_CONNECTION=False

#执行脚本安装 JumpServer 服务

./jmsctl.sh install

#启动 JumpServer 节点服务

./jmsctl.sh start

如需扩展其他 JumpServer 节点参考本章节内容即可

部署 MinIO 服务

具体部署过程见MinIO分布式部署

账号密码资源见MinIO资源情况

在 MinIO 中创建 Buckets资源

访问 http://120.55.16.246:19001/login,输入 MinIO 账号密码登录。

点击左侧菜单的 Buckets,选择 Create Bucket 创建桶,Bucket Name 输入 jumpserver,然后点击 Save 保存。

创建bucket策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::jumpserver/*" ] } ] }

创建用户组

创建用户,并管理用户组和策略

 在 JumpServer 中配置 MinIO

  • 访问 JumpServer Web 页面并使用管理员账号进行登录。
  • 点击左侧菜单栏的 [终端管理],在页面的上方选择 [存储配置],在 [录像存储] 下方选择 [创建] 选择 [Ceph]
  • 根据下方的说明进行填写,保存后在 [终端管理] 页面对所有组件进行 [更新],录像存储选择 [jms-mino],提交。

选项

参考值

说明

名称 (Name)jms-minio标识, 不可重复
类型 (Type)Ceph固定, 不可更改
桶名称 (Bucket)jumpserverBucket Name
Access keyminioMINIO_ROOT_USER
Secret keyKXOeyNgDeTdpeu9qMINIO_ROOT_PASSWORD
端点 (Endpoint)http://120.55.16.246:19000minio 服务访问地址
默认存储新组件将自动使用该存储

通过管理员账号进入系统设置界面

选择存储设置-对象存储

创建Ceph对象存储

填写minio存储信息

测试成功即可

部署Elasticsearch 服务

安装配置 Docker 环境

# 安装 Docker

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

yum -y install docker-ce

# 配置 Docker

vim /etc/docker/daemon.json

{

 "data-root""/var/lib/docker",

 "live-restore"true,

 "registry-mirrors": ["https://hub-mirror.c.163.com""https://bmtrgdvx.mirror.aliyuncs.com""http://f1361db2.m.daocloud.io"],

 "log-driver""json-file",

 "log-opts": {

  "max-file""3",

  "max-size""10m"

 }

}

# 启动 Docker

systemctl enable docker

systemctl start docker

 安装配置 Elasticsearch

# 下载 Elasticsearch 镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.6

# Elasticsearch 持久化数据目录创建

mkdir -p /opt/jumpserver/elasticsearch/data /opt/jumpserver/elasticsearch/logs

# 启动 Elasticsearch 服务⚓︎

## 请自行修改账号密码并牢记,丢失后可以删掉容器后重新用新密码创建,数据不会丢失

# 9200                                  # Web 访问端口

# 9300                                  # 集群通信

# discovery.type=single-node            # 单节点

# bootstrap.memory_lock="true"          # 锁定物理内存, 不使用 swap

# xpack.security.enabled="true"         # 开启安全模块

# TAKE_FILE_OWNERSHIP="true"            # 自动修改挂载文件夹的所属用户

# ES_JAVA_OPTS="-Xms512m -Xmx512m"      # JVM 内存大小, 推荐设置为主机内存的一半

# elastic                               # Elasticsearch 账号

# ELASTIC_PASSWORD=KXOeyNgDeTdpeu9q     # Elasticsearch 密码

docker run --name jms_es -d -p 9200:9200 -p 9300:9300 -e cluster.name=docker-cluster -e discovery.type=single-node -e network.host=0.0.0.0 -e bootstrap.memory_lock="true" -e xpack.security.enabled="true" -e TAKE_FILE_OWNERSHIP="true" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e ELASTIC_PASSWORD=KXOeyNgDeTdpeu9q -v /opt/jumpserver/elasticsearch/data:/usr/share/elasticsearch/data -v /opt/jumpserver/elasticsearch/logs:/usr/share/elasticsearch/logs --restart=always docker.elastic.co/elasticsearch/elasticsearch:7.17.6

在 JumpServer 中配置 Elasticsearch

  • 访问 JumpServer Web 页面并使用管理员账号进行登录。
  • 点击左侧菜单栏的 [终端管理],在页面的上方选择 [存储配置],在 [命令存储] 下方选择 [创建] 选择 [Elasticsearch]
  • 根据下方的说明进行填写,保存后在 [终端管理] 页面对所有组件进行 [更新],命令存储选择 [jms-es],提交。

选项

参考值

说明

名称 (Name)jms-es标识, 不可重复
类型 (Type)Elasticsearch固定, 不可更改
主机 (Hosts)http://elastic:KXOeyNgDeTdpeu9q@10.0.110.89:9200/http://es_host:es_port
索引 (Index)jumpserver索引
忽略证书认证https 自签 ssl 需要勾选
默认存储新组件将自动使用该存储

通过管理员账号进入系统设置界面

选择存储设置-命令存储

填写elasticsearch存储信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值