美文网首页学习
1. JumpServer部署

1. JumpServer部署

作者: 随便写写咯 | 来源:发表于2021-02-13 04:41 被阅读0次

1 JumpSrv部署(Docker)

堡垒机和vpn的区别

vpn是四层服务, 只负责转发请求到后端服务器
堡垒机是七层服务, 可以支持对用户的权限管理等功能

实验环境

CentOS 7 两台
JumpSrv 1.5.9
MySQL 5.6.49,Redis 4.0.14

1. 分别在JumpSrv服务器和数据库服务器上部署docker

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)
docker-ce镜像-docker-ce下载地址-docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)

[13:09:14 root@jumpsrv ~]#vim docker_install.sh
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start  
[13:09:27 root@database ~]#vim docker_install.sh
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start  

2. 在数据库服务器上, 部署MySQL-5.6.49

[13:25:51 root@database ~]#docker pull mysql:5.6.49

启动一个mysql容器

[13:46:43 root@database ~]#docker run -it --rm -p3306:3306 mysql:5.6.49 bash
[13:48:25 root@database ~]#docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
46f8ecd4b811        mysql:5.6.49        "docker-entrypoint.s…"   7 seconds ago       Up 7 seconds        0.0.0.0:3306->3306/tcp   awesome_bassi

打开另一个终端将容器中的配置文件拷贝到宿主机

[13:41:51 root@database ~]#mkdir -p /etc/mysql/mysql.conf.d # 服务端配置文件
[13:48:27 root@database ~]#docker cp 46f8ecd4b811:/etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
[13:53:41 root@database ~]#mkdir -p  /etc/mysql/conf.d  # 客户端配置文件
[13:53:47 root@database ~]#docker cp 46f8ecd4b811:/etc/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf

将MySQL字符集改成utf8

[13:48:50 root@database ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
...
character-set-server=utf8 
[13:55:34 root@database ~]#vim /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8  

宿主机上创建保存MySQL数据的保存目录, 将MySQL数据存放到宿主机, 防止容器关闭后, 数据丢失

[13:56:17 root@database ~]#mkdir /data/mysql -p

退出之前创建的容器

[13:48:15 root@database ~]#docker run -it --rm -p3306:3306 mysql:5.6.49 bash
root@46f8ecd4b811:/# exit
exit

运行MySQL容器

[14:02:45 root@database ~]#docker run -d -p 3306:3306 \
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \  #将宿主机上准备好的配置文件挂载到容器内
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \ #将宿主机上准备好的配置文件挂载到容器内
-v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='Aa112211' \ #MySQL容器中的数据目录在/var/lib/mysql下, 因此要把宿主机上的MySQL数据目录挂载到/var/lib/mysql. 
mysql:5.6.49
4e8620eec63776e50ec605e2b0368f9428a2c4f1c1155df08e0cdc805e57a15c

验证容器正常运行

[15:17:38 root@database ~]#docker logs -f a9dd6848d990
...
2020-12-01 08:44:59 1 [Note] Server hostname (bind-address): '*'; port: 3306
2020-12-01 08:44:59 1 [Note] IPv6 is available.
2020-12-01 08:44:59 1 [Note]   - '::' resolves to '::';
2020-12-01 08:44:59 1 [Note] Server socket created on IP: '::'.
2020-12-01 08:44:59 1 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2020-12-01 08:44:59 1 [Warning] 'proxies_priv' entry '@ root@569bd6f7a9e9' ignored in --skip-name-resolve mode.
2020-12-01 08:44:59 1 [Note] Event Scheduler: Loaded 0 events
2020-12-01 08:44:59 1 [Note] mysqld: ready for connections.
Version: '5.6.49'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

在JumpSrv服务器上测试MySQL连接

[16:35:00 root@jumpsrv ~]#mysql -uroot -h10.0.0.227 -pAa112211
MySQL [(none)]> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *FA87043B7B7E24E31F1B8E34AD2AEC2C2AA66D40 |
| root | %         | *FA87043B7B7E24E31F1B8E34AD2AEC2C2AA66D40 |  #root账号是在所有服务器都可以连接. 
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

3. 在MySQL上创建JumpSrv数据库

MySQL [(none)]> create database jumpserver default charset 'utf8' collate 'utf8_bin';
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'Aa112211';
Query OK, 0 rows affected (0.00 sec)
jumpserver用户的密码不能是纯数字, 否则虽然MySQL可以运行, 但是JumpSrv连接MySQL会有问题.

测试在JumpSrv服务器上, 可以通过刚创建的jumpserver用户连接到MySQL

[17:48:33 root@jumpsrv ~]#mysql -ujumpserver -h10.0.0.227 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.49 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jumpserver         |
+--------------------+
2 rows in set (0.01 sec)

4. 在数据库服务器上, 部署Redis-4.0.14

[18:24:23 root@database ~]#docker pull redis:4.0.14

启动Redis容器, 对于redis的优化配置, 可以把配置文件拷贝到宿主机自行修改

[18:25:24 root@database ~]#docker run -d -p 6379:6379 redis:4.0.14
[18:26:28 root@database ~]#docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a4d485f350d8        redis:4.0.14        "docker-entrypoint.s…"   38 seconds ago      Up 38 seconds       0.0.0.0:6379->6379/tcp   hopeful_cartwright
569bd6f7a9e9        mysql:5.6.49        "docker-entrypoint.s…"   2 hours ago         Up 2 hours          0.0.0.0:3306->3306/tcp   interesting_napier

测试JumpSrv服务器可以访问Redis

[18:28:00 root@jumpsrv ~]#yum -y install redis
[18:28:19 root@jumpsrv ~]#redis-cli -h 10.0.0.227
10.0.0.227:6379> info
# Server
redis_version:4.0.14
...

5. 在JumpServer服务器上部署JumpSrv 1.5.9

[18:40:45 root@jumpsrv ~]#docker pull jumpserver/jms_all:1.5.9

生成随机加密秘钥

[18:28:49 root@jumpsrv ~]#if [ ! "$SECRET_KEY" ]; then
>   SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
>   echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc;
>   echo $SECRET_KEY;
> else
>   echo $SECRET_KEY;
> fi 
9phjC0oBxiJvOgdPr8dXcKj4oRJ9iWGSgr2kwzKE4Yceh19iHv
[18:32:15 root@jumpsrv ~]#if [ ! "$BOOTSTRAP_TOKEN" ]; then
>   BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
>   echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc;
>   echo $BOOTSTRAP_TOKEN;
> else
>   echo $BOOTSTRAP_TOKEN;
> fi
keinFlGQZTSOUqXl

启动JumpSrv容器

docker run --name jms_all -d \
  -v /opt/jumpserver/data:/opt/jumpserver/data \
  -p 80:80 \
  -p 2222:2222 \
  -e SECRET_KEY=9phjC0oBxiJvOgdPr8dXcKj4oRJ9iWGSgr2kwzKE4Yceh19iHv \
  -e BOOTSTRAP_TOKEN=keinFlGQZTSOUqXl \
  -e DB_HOST=10.0.0.227 \
  -e DB_PORT=3306 \
  -e DB_USER=jumpserver\
  -e DB_PASSWORD=Aa112211 \
  -e DB_NAME=jumpserver \
  -e REDIS_HOST=10.0.0.227 \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD= \
  --privileged=true \
  jumpserver/jms_all:1.5.9
[18:47:54 root@jumpsrv ~]#docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                                        NAMES
0ab070c6a261        jumpserver/jms_all:1.5.9   "./entrypoint.sh"   30 seconds ago      Up 28 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp   jms_all
[18:49:29 root@jumpsrv ~]#docker logs -f 0ab070c6a261
Starting guacd: SUCCESS
Tomcat started.
Jumpserver ALL 1.5.9
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
有问题请参考 http://docs.jumpserver.org/zh/docs/faq.html

进入容器命令 docker exec -it jms_all /bin/bash

6. 启动容器后会初始化JumpSrv, 生成对应数据库文件

MySQL [(none)]> show tables from jumpserver;
+----------------------------------------------+
| Tables_in_jumpserver                         |
+----------------------------------------------+
| applications_databaseapp                     |
| applications_remoteapp                       |
| assets_adminuser                             |
| assets_asset  
...

7. 测试访问JumpSrv

image.png

默认的账号密码都是admin

image.png

8. 故障处理

无论是MySQL容器还是Redis容器down掉, 前端访问JumpSrv都会出现Internal Server Error

MySQL故障, 因为是容器启动, 并且数据都是存到宿主机, 一旦MySQL容器故障, 可以直接开一个新的容器, 数据都指向宿主机

docker run -d -p 3306:3306 -v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="Aa112211" mysql:5.6.49
1d234950c4a36cf84fecd40465341ffb7eb8d1674298ac2c36ec4984092d34bc

Redis故障, 和MySQL一样, 出现故障, 只要重新起个Redis容器即可
JumpSrv容器故障, 需要先重新生成秘钥对, 再重起一个容器

相关文章

  • 1. JumpServer部署

    1 JumpSrv部署(Docker) 实验环境 1. 分别在JumpSrv服务器和数据库服务器上部署docker...

  • Jumpserver的部署

    一、官方文档一键部署jumpserver 链接 1.一键安装jumpserver 2、下载文件 3、安装install

  • jumpserver 部署

    jumpserver 是一款 python3 开源的堡垒机,本文记录了一次安装的过程。 版本信息 CentOS 7...

  • 搭建 JumpServer 堡垒机管理数万台游戏服务器

    1 Jumpserver 堡垒机概述-部署 Jumpserver 运行环境 1.1跳板机概述 跳板机就是一台服务器...

  • 开源jumpserver软件部署堡垒机

    1.安装环境使用centos7.8系统2. 参考官方文档极速部署方式安装jumpserver,也可以选择使用...

  • 中小企业快速合规,快速部署开源堡垒机TELEPORT

    为什么不是JumpServer? 说起开源堡垒机,恐怕JumpServer已经成为了代表,如果中小型企业要部署一台...

  • jumpserver 部署之旅

    堡垒机,意在利用良好的界面与易懂的方式对资产和人员进行管理、审计。Jumpserver,国产、开源,美观。 本人于...

  • jumpserver安装部署

    一. 准备 Python3 和 Python 虚拟环境 cd /opt yum -y install wget s...

  • Jumpserver堡垒机部署

    1、Jumpserver堡垒机概述 跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到...

  • jumpserver

    说明 jumpserver堡垒机组件说明: 1、Jumpserver: 现指 Jumpserver 管理后台,是核...

网友评论

    本文标题:1. JumpServer部署

    本文链接:https://www.haomeiwen.com/subject/tchcwktx.html