mysql 主从复制
- 部署M-S架构 (主-从)
- 准备至少2台mysql相同版本的服务器,同时要保证同步的数据一致
- 编辑配置文件 vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #本机数据库 ID 标示,唯一性
binlog-do-db=数据库 #需要同步的数据库名
binlog-ignore-db=数据库 #不可以被从服务器复制的库
- 重启数据库: systemctl restart mysqld
- 登录数据库授权: grant replication slave on 数据库.表名 identified by 密码
刷新权限: flush privileges
- 查看主状态,检测是否成功: show master status;
- 查看二进制日志: show binlog events\G;
- 测试是否能远程登录: mysql -uslave -p密码 -h ip
- 从机配置: vim /etc/my.cnf,只用写入server-id即可
- 从机重启: systemctl restart mysqld
- 从机添加主机: change master to master_host=ip,master_user=用户名,master_password=密码
- 开启从机模式:start slave\G;
- 查看状态: show slave status; 查看以下2个状态,2个yes则为成功
Slave_IO_Running :一个负责与 Master 主机的 IO 通信
Slave_SQL_Running:负责自己的 slave mysql 进程
- 在主服务看状态: show processlist\G;
- 排错,同步bin-log
- 查看主机binlog : show master status;
- 从机停止状态: stop slave
- 更改bin-log日志: change master to master_log_file=xx , master_log_pos=xx
- 开启从状态: start slave
- 验证 : show salve status\G;
IO 线程排错思路:
二进制日志没有开启 IPTABLES 没有放开端口 对应的主机 IP 地址写错了
SQL 线程出错
主从服务器数据库结构不统一,出错后,数据少,可以手动解决创建插入,再更新 slave 状态。
注:如果主上误删除了。那么从上也就误删除了。 #因此主上要定期做 mysqldump 备份。
- 搭建M-S-S架构 (主-中继-从)
- master授权用户: grant replication slave on . to 账号@’登录网段’ identified by ‘123456’;
- 修改master配置: vim /etc/my.cnf
log-bin=mysql-bin-master
server-id=1
binlog-do-db=HA
log-bin=mysql-bin-master
binlog-ignore-db=mysql
sync-binlog=1 #执行 N 次写入 binlog 后,与硬盘同步
binlog-format=row #binlog 保存方式,记录哪条数据被修改了
- 重启服务: systemctl restart mysqld
- 中继主机配置文件: vim /etc/my.cnf
server-id= 2 #修改主配置文件也要开启 bin-log:
log-bin=mysql-bin-slave1
log-slave-updates=1 #读出二进制日志并加入自己
binlog-format=row
- 重启服务: systemctl restart mysqld
- 授权账号: change master to master_host=’ip’,master_user=’账号’,master_password=’密码’;
- 授权账号给从服务: grant replication slave on . to ‘账号’@’ip’ identified by ‘密码’;
- 开启从服务: start slave;
- 验证是否成功: show slave status;
- 从服务配置: vim /etc/my.cnf
server-id = 3
log-bin=mysql-bin-slave2 #后面还可以加从数据库
binlog-format=row
- 重启服务器: systemctl restart mysqld
- 指定中继成为从服务器的主: change master to master_host= ‘ip’,master_user= ‘账号’,master_passwrod= ‘密码’;
-
mycat读写分离
一、部署mycat集群(一台mycat,两台主从)
搭建java环境JDK(1.7以上版本),传入mycat软件包和jdk环境包
- 创建文件: mkdir /usr/java
- 解压文件: tar xf jdk-8u191-linux-x64.tar.gz -C /usr/java/
- 配置环境变量: vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_191
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
- 配置生效: source /etc/profile
- 验证是否成功: java -version
- 创建文件夹: mkdir /opt/mycat
- 解压文件: tar xf Mycat-server-1.5-RELEASE-0301083012-linux.tar.gz -C /opt/mycat/
- 修改mycat用户: useradd mycat
- 修改密码: echo 123456 | passwd —stdin mycat
修改文件权限: chown -R mycat.mycat /opt/mycat/
配置mycat环境变量: vim /etc/profile.d/mycat.sh
MYCAT_HOME=/usr/local/mycat PATH=$MYCAT_HOME/bin:$PATH
- 生效配置: source /etc/profile.d/mycat.sh
编辑用户账号登录数据库: vim /opt/mycat/conf/server.xml
# 定义管理员账号,连接mycat使用
123456 # 密码
test # 定义逻辑数据库
# 定义只读账号,连接mycat使用
user # 定义密码
test # 定义逻辑数据库
true # 只读备份主配置文件: cp /opt/mycat/conf/schema.xml{,.bak}
- 编辑文件: vim /opt/mycat/conf/schema.xml
<?xml version=”1.0”?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
- 启动mycat: /opt/mycat/bin/mycat start
- 验证是否成功: cat /opt/mycat/logs/wrapper.log | grep successfully
- 主服务器编辑配置文件: vim /etc/my.cnf
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #本机数据库 ID 标示
binlog-do-db=ha #可以被从服务器复制的库, 二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
- 重启 : systemctl restart mysqld
- 授权mycat用户: grant all privileges on . to ‘账号’@”%”主机 “密码”;
- 授权从机登录: grant replication slave on . to slave@”主机” identified by “密码”;
- 从机配置: vim /etc/my.cnf
log-bin=mysql-bin-slave #启用二进制日志
server-id=2 #本机数据库 ID 标示
- 重启 : systemctl restart mysqld
- 指定主数据库: change master to master_host=’ip’,master_user=’slave’,master_password=’密码’;
- 创建mycat账号: grant all privileges on . to ‘账号’@”%”主机 “密码”;
- 开启从服务: start slave;
- 验证主从开启: show slave status;
- mycat服务重启: /opt/mycat/bin/mycat restart
- 验证: cat /opt/mycat/logs/wrapper.log | grep successfully
测试是否能登录: mysql -uroot -p123456 -h ip -P 8066
MGR数据库高可用
MGR 基础结构要求
1)引擎必须为 innodb,因为需事务支持在 commit 时对各节点进行冲突检查
2)每个表必须有主键,在进行事务冲突检测时需要利用主键值对比
3)必须开启 binlog 且为 row 格式
4)开启 GTID,且主从状态信息存于表中(—master-info-repository=TABLE 、—relay-log-info-repository=TABLE),—log-slave-updates 打开
5)一致性检测设置—transaction-write-set-extraction=XXHASH64
二、部署MGR集群
1. 所有节点安装相同版本数据库
2. 三台主机都互相写入主机名解析
3. 获取GTID: uuidgen
4. 主节点配置: vim /etc/my.cnf
# Group Replication
server_id = 100 #服务 ID
gtid_mode = ON #全局事务
enforce_gtid_consistency = ON #强制 GTID 的一致性
master_info_repository = TABLE #将 master.info 元数据保存在系统表中
relay_log_info_repository = TABLE #将 relay.info 元数据保存在系统表中
binlog_checksum = NONE #禁用二进制日志事件校验
log_slave_updates = ON #级联复制
log_bin = binlog #开启二进制日志记录
binlog_format = ROW #以行的格式记录
transaction_write_set_extraction = XXHASH64 #使用哈希算法将其编码为散列
loose-group_replication_group_name = ‘25217f97-517b-4fb6-90c6-35777ada073f’ #加入的组名
loose-group_replication_start_on_boot = off #不自动启用组复制集群
loose-group_replication_local_address = ‘xuegod63:33061’ #以本机端口 33061 接受来自组中成员的传入连接
loose-group_replication_group_seeds = ‘xuegod63:33061,xuegod62:33062,xuegod64:33063’ #组中成员访问表
loose-group_replication_bootstrap_group = off #不启用引导组
5.重启mysql服务: systemctl restart mysqld
6.停止日志记录: set SQL_LOG_BIN=0;
7.授权从账号并刷新权限: grant replication slave on . to repl@’192.168.1.%’ identified by ‘123456’;
flush privileges;
8.开启日志记录: set SQL_LOG_BIN=1;
9.加入集群:change master to master_user=’repl’,master_password=’123456’ for channel ‘group_replication_recovery’;
10.安装插件: install PLUGIN group_replication SONAME ‘group_replication.so’;
11.检查是否安装成功: show plugins;
12.启动插件,以后加入集群的服务器以这台服务器为基准: set global group_replication_bootstrap_group=ON;
13.作为首个节点加入集群: start group_replication;
set global group_replication_bootstrap_group=OFF;
- 查看集群状态: select * from performance_schema.replication_group_members;
- 配置从服务器配置: vim /etc/my.cnf
参考主服务器配置 server-id 和 local_address 改掉就行
- 重启mysql: systemctl restart mysqld
- 停掉日志: set sql_log_bin=0;
- 授权用户并刷新权限: grant replication slave on . to repl@’192.168.1.%’ identified by ‘123456’;
flush privileges;
- 开启日志记录: set sql_log_bin=1;
- 构建从服务器集群: change master to master_user=’repl’,master_password=’123456’ for channel ‘group_replication_recovery’;
- 安装插件: install PLUGIN group_replication SONAME ‘group_replication.so’;
- 实例添加到之前的组: set global group_replication_allow_local_disjoint_gtids_join=ON;
start group_replication;
- 在主服务器上,看从服务器状态: select * from performance_schema.replication_group_members;
- 所有从机执行从机操作即可加入集群,重复17-22操作,主可以读写,从机只能读,
- 读写判断语句:show variables like ‘%read_only%’;
多主模式MGR集群(已经有单主的情况下)
主机执行命令:
stop GROUP_REPLICATION;
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=ON;
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
2.从机执行命令:
stop GROUP_REPLICATION;
set global group_replication_allow_local_disjoint_gtids_join=ON;
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=ON;
start group_replication;重新部署多主模式:
1.写入配置文件: vim /etc/my.cnf
server_id = 100 #服务 ID
gtid_mode = ON #全局事务
enforce_gtid_consistency = ON #强制 GTID 的一致性
master_info_repository = TABLE #将 master.info 元数据保存在系统表中
relay_log_info_repository = TABLE #将 relay.info 元数据保存在系统表中
binlog_checksum = NONE #禁用二进制日志事件校验
log_slave_updates = ON #级联复制
log_bin = binlog #开启二进制日志记录
binlog_format= ROW #以行的格式记录
transaction_write_set_extraction = XXHASH64 #使用哈希算法将其编码为散列
loose-group_replication_group_name = ‘ce9be252-2b71-11e6-b8f4-00212844f856’ #加入的组名
loose-group_replication_start_on_boot = off #不自动启用组复制集群
loose-group_replication_local_address = ‘xuegod63:33061’ #以本机端口 33061 接受来自组中成员的传入连接
loose-group_replication_group_seeds =’xuegod63:33061,xuegod62:33062,xuegod64:33063’ #组中成员访问表
loose-group_replication_bootstrap_group = off #不启用引导组
group_replication_single_primary_mode = off #关闭单 master 模式
group_replication_enforce_update_everywhere_checks = ON #多主一致性检查
LVS-NAT
一、部署lvs-nat集群,3台机器以上
1. 分发器开启转发模式: echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p
2. 修改网卡信息,让3台机器有一个网卡ip在一个局域网中,且从机的网卡网关要指向分发器的ip
3. 分发器安装ipvsadm: yum -y install ipvsadm
4. 设置ipvsadm规则: ipvsadm -A -t ip:端口 -s rr
5. 设置ipvsadm分发ip规则: ipvsadm -a -t 分发器ip:端口 -r 从机ip -m
6. 验证是否成功: ipvsadm -L -n
7. 开机启动: systemctl enable ipvsadm
8. 备份规则: ipvsadm -S > 保存路径
9. 恢复规则: ipvsadm -R < 保存路径
10.从机: yum -y install httpd && systemc start httpd
11.从机随便写入测试页面进行测试
LVS-DR
一、搭建DR集群
1. 配置主机网卡,生成分发器ip : cp ifcfg-ens33 ifcfg-ens33:1
2. 编辑网卡ifcfg-ens33:1把UUID删除,名字改成文件名对应,修改ip
3. 安装ipvsadm: yum -y install ipvsadm
4. 添加分发器ip: ipvsadm -A -t ip:端口 -s rr
5. 添加节点ip: ipvsadm -a -t ip:端口 -r ip -g
6. 验证: ipvsadm -L -n
7. 配置从机网卡,使用回环口地址来配置: cp ifcfg-lo ifcfg-lo:1 && vim ifcfg-lo:1,只保留设备名,ip,子网掩码,noboot和NAME
8. 重启网络: systemctl restart network
9. 关闭 ARP 应答和广播: vim /etc/sysctl.conf
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
10. 配置生效: sysctl -p
11. 两台从机配置相同
12. 安装httpd: yum -y install httpd | systemclt enable —now httpd
13. echo xxxx > /var/www/html/index.html
14.在找一台机器用elinks ip —dump的方式测试
二、lvs中多种调度方式
1. rr 在服务器池中遍历循环
2. wrr 基于集群节点按比例分配连接数
3. lc 哪个节点性能最好分配给谁
4. wlc 带权重的lc分配
5. lblc 谁连接少分配给谁
6. lblcr 带复制的基于lblc
7. du 以目标地址来确定发送
8. sh 会话保持
keepalived+LVS-DR
一、配置keepalived
1. 节点机器安装lvs和keepalived: yum -y install ipvsadm keepalived
2. 配置主节点配置文件(删除中文注释):
global_defs { # 一般不会发邮件,所有走默认即可
notification_email {
root@localhost #默认三个地址,修改可用地址
}
notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id xuegod62 #主机标识一般设置为主机名,发送邮件时会用到
}
vrrp_instance apache { # 定义一个实例组
state MASTER # 标记主机权限
interface ens33 # 使用网卡名字
virtual_router_id 51 # 使用的vrrp组名
priority 100 # 权限,master权限为最大,备用master节点要比这个小
advert_int 1 # 组播信息发送间隔,2个节点必须一致
authentication { # 开启认证
auth_type PASS # 开启密码认证
auth_pass 1111 # 认证密码
}
virtual_ipaddress { # 指定虚拟分发节点ip
192.168.1.200
}
}
virtual_server 192.168.2.200 80 { # 分发器配置
delay_loop 6 # lvs多长时间检测一次
lb_algo rr # 使用轮训的方式
lb_kind DR # 使用lvs模式
nat_mask 255.255.255.0
# persistence_timeout 50 # 50秒内的请求发送到同个real server,用于保持会话,但是会干扰轮训
protocol TCP # 使用tcp
real_server 192.168.1.65 80 { # 后端节点
weight 1 # 权重
TCP_CHECK { # tcp检查机制
connect_timeout 3 # 3秒无响应则超时
nb_get_retry 3 # 表示重试次数
delay_before_retry 3 # 表示重试间隔
connect_port 80 # 检测端口
}
}
real_server 192.168.1.66 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
3. 启动keepalived并开机启动: systemctl enable —now keepalived
4. 备用主安装: yum -y install keepalived ipvsadm
5. 直接将配置文件拷贝过来: mv keepalived.conf{,.bak} && scp root@192.168.1.63:/etc/keepalived/keepalived.conf ./
6. 修改内容: vim keepalived.conf
router_id 后面改成本机主机名作为标识,state后面改成备用BACKUP,priority后面数值要比maser小
7. 启动: systemctl enable —now keepalived
8. 到主机停掉ip 进行测试
9. 从机编写脚本: vim /etc/init.d/lvs
#!/bin/bash
#description:start relserver
VIP=192.168.1.111
source /etc/init.d/functions
case $1 in
start)
echo ‘start LVS of Realserver DR’
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
echo ‘1’ > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo ‘2’ > /proc/sys/net/ipv4/conf/lo/arp_announce
echo ‘1’ > /proc/sys/net/ipv4/conf/all/arp_ignore
echo ‘2’ > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:1 down
echo ‘Close LVS of Realserver DR’
echo ‘0’ > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo ‘0’ > /proc/sys/net/ipv4/conf/lo/arp_announce
echo ‘0’ > /proc/sys/net/ipv4/conf/all/arp_ignore
echo ‘0’ > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo “Usage:$0 (start|stop)”
exit 1
esac
10. 其他从机直接scp复制过去即可
11. 给执行权限: chmod +x /etc/init.d/lvs
12. 执行脚本: /etc/init.d/lvs start
13. 安装httpd,然后写入网页进行测试
14. 在开台机器,安装elinks测试: elinks ip —dump
二、互为主从
同之前配置文件,只不过是keepalived配置2个vip,2个配置文件互为主从,即可
nginx反向代理(动静分离)
- 安装编译nginx的依赖:yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
2. 创建nginx用户: useradd nginx -s /sbin/nologin -M
3. 解压nginx源码包: tar xf nginx-1.18.0.tar.gz -C /usr/local/src/ && cd /usr/local/src
4. 配置nginx : ./configure —prefix=/usr/local/nginx —user=nginx —group=nginx —with-http_ssl_module —with-http_realip_module —with-http_gzip_static_module \
—with-http_dav_module —with-http_stub_status_module —with-http_addition_module —with-http_sub_module —with-http_flv_module —with-http_mp4_module —with-pcre
5. 编译安装: make -j 4 && make install
6. 到nginx目录:cd /usr/local/nginx/conf/
7. 复制一份保留: cp nginx.conf{,.bak}
8. 编辑配置文件: vim nginx.conf
找到location标签,添加以下参数(动静分离),同时也要注释掉nginx中php部分内容,不然会直接解析php:
if ($request_0uri ~ .html$){
proxy_pass http://htmlservers;
}
if ($request_uri ~ .php$){
proxy_pass http://phpservers;
}
proxy_pass http://picservers;
}
在末尾处添加模块参数,于上面对应:
upstream htmlservers { #定义负载均衡服务器组名称, 要和上面对应
server 192.168.1.65:80;
server 192.168.1.64:80;
}
upstream phpservers{
server 192.168.1.65:80;
server 192.168.1.64:80;
}
upstream picservers {
server 192.168.1.65:80;
server 192.168.1.64:80;
}
9. 检验配置文件是否正确: ./nginx -t
10. 重载nginx: ./nginx -s reload
11. 其他的后端服务器写测试: echo 192.168.1.62 > /var/www/html/index.html
192.168.1.64
<?php
phpinfo();
?>
12. 启动测试的服务: systemctl start httpd
13. 刷新页面测试
nginx+haproxy
- 解压haproxy源码包 : tar xf haproxy-1.7.9.tar.tar -C /usr/local/src/ && cd /usr/local/src/haproxy-1.7.9/
2. 查看内核版本,源码安装用: uname -r 查看内核后,可以在目录README中找到对应参数
3. 安装依赖: yum -y install make gcc gcc-c++ openssl-devel
4. 配置haproxy: make TARGET=linux2628 PREFIX=/usr/local/haproxy
5. 安装: make install PREFIX=/usr/local/haproxy
6. 源码安装没有配置文件,需要自己创建文件夹: mkdir /usr/local/haproxy/conf
7. 编写配置文件: vim /usr/local/haproxy/conf/haproxy.cfg
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
uid 99 #所属运行的用户 uid
gid 99 #所属运行的用户组
daemon #以后台形式运行 haproxy
nbproc 1 #启动 1 个 haproxy 实例。# #工作进程数量(CPU 数量) ,实际工作中,应该设置成和 CPU 核心数一样。 这样可以发挥出最大的性能。
pidfile /usr/local/haproxy/run/haproxy.pid #将所有进程写入 pid 文件
#debug #调试错误时用
#quiet #安静
defaults
log global
log 127.0.0.1 local3 #日志文件的输出定向。产生的日志级别为 local3. 系统中local1-7,用户自己定义
mode http #工作模式,所处理的类别,默认采用 http 模式,可配置成 tcp 作 4 层消息转发
option httplog #日志类别,记载 http 日志
option httpclose #每次请求完毕后主动关闭 http 通道,haproxy 不支持 keep-alive,只能模拟这种模式的实现
option dontlognull #不记录空连接,产生的日志
option forwardfor #如果后端服务器需要获得客户端真实 ip 需要配置的参数,可以从Http Header 中获得客户端 ip
option redispatch #当 serverid 对应的服务器挂掉后,强制定向到其他健康服务器
retries 2 # 2 次连接失败就认为服务器不可用,主要通过后面的 check 检查
maxconn 2000 #最大连接数
balance roundrobin #负载均衡算法
stats uri /haproxy-stats #haproxy 监控页面的访问地址 # 可通过http://localhost:80/haproxy-stats 访问
timeout connect 5000 #连接超时时间。 单位:ms 毫秒
timeout client 50000 #客户端连接超时时间
timeout server 50000 #服务器端连接超时时间
mode http
option httpchk GET /index.html #健康检测#注意实际工作中测试时,应该下载某一个页面来进行测试,因此这个页面应该是个小页面,而不要用首页面。这里是每隔一秒检查一次页面。
frontend http #前端配置,http 名称可自定义
bind :80 #发起 http 请求 80 端口,会被转发到设置的 ip 及端口
default_backend http_back #转发到后端 写上后端名称
backend http_back #后端配置,名称上下关联
server s1 192.168.1.62:80 weight 3 check #后端的主机 IP &权衡
server s2 192.168.1.64:80 weight 3 check #后端的主机 IP &权衡
8. 复制启动脚本到init目录下: cp /usr/local/src/haproxy-1.7.9/examples/haproxy.init /etc/init.d/haproxy
9. 授予权限: chmod 755 !$
10. 编辑启动脚本(原文本删除,直接复制粘贴):
#!/bin/sh
# chkconfig: - 85 15
# description: HA-Proxy server
# processname: haproxy
# config: /usr/local/haproxy/etc/haproxy.cfg
# pidfile: /usr/local/haproxy/run/haproxy.pid
# Source function library.
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ “$NETWORKING” = “no” ] && exit 0
# This is our service name
BASENAME=haproxy
BIN=/usr/sbin/haproxy
CFG=/usr/local/haproxy/etc/haproxy.cfg
[ -f $CFG ] || exit 1
PIDFILE=/usr/local/haproxy/run/haproxy.pid
LOCKFILE=/usr/local/haproxy/run/haproxy
RETVAL=0
start() {
quiet_check
if [ $? -ne 0 ]; then
echo “Errors found in configuration file, check it with ‘$BASENAME check’.”
return 1
fi
echo -n “Starting $BASENAME: “
daemon $BIN -D -f $CFG -p $PIDFILE
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $LOCKFILE
return $RETVAL
}
stop() {
echo -n “Shutting down $BASENAME: “
killproc $BASENAME -USR1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
[ $RETVAL -eq 0 ] && rm -f $PIDFILE
return $RETVAL
}
restart() {
quiet_check
if [ $? -ne 0 ]; then
echo “Errors found in configuration file, check it with ‘$BASENAME check’.”
return 1
fi
stop
start
}
reload() {
if ! [ -s $PIDFILE ]; then
return 0
fi
quiet_check
if [ $? -ne 0 ]; then
echo “Errors found in configuration file, check it with ‘$BASENAME check’.”
return 1
fi
$BIN -D -f $CFG -p $PIDFILE -sf $(cat $PIDFILE)
}
check() {
$BIN -c -q -V -f $CFG
}
quiet_check() {
$BIN -c -q -f $CFG
}
rhstatus() {
status $BASENAME
}
condrestart() {
[ -e $LOCKFILE ] && restart || :
}
# See how we were called.
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
status)
rhstatus
;;
check)
check
;;
)
echo $”Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}”
exit 1
esac
exit $?
11. 因为启动脚本会在/usr/sbin下找: cd /usr/sbin/ && ln -s /usr/local/haproxy/sbin/haproxy ./
12. 创建文件并给予权限: mkdir -p /usr/local/haproxy/run && chown nobody:nobody /usr/local/haproxy/ -R
13. 配置日志收集: vim /etc/rsyslog.conf
取消注释: $ModLoad imudp 和 $UDPServerRun 514
在local7. /var/log/boot.log下面2行添加:
local3. /var/log/haproxy.log
local0.* /var/log/haproxy.log
14. 重启日志服务: systemctl restart rsyslog
15. 启动服务: /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg 关闭服务killall即可
16. 检查是否成功: netstat -anutp | grep 80
17. 测试机器安装httpd: yum install httpd php -y
18 建立测试页面: echo 192.168.1.64 > /var/www/html/index.html
192.168.1.64
<?php
phpinfo();
?>
19. 启动httpd测试: systemctl start httpd
20 haproxy监控web: http://ip/haproxy-statsceph分布式存储
- 存储节点格式化: mkfs.xfs /dev/sdb
2. 创建osd文件夹: mkdir /opt/osd1
3. 挂载: mount /dev/sdb /opt/osd1/
4. 验证: df -h
5. 编辑主机文件: vim /etc/hosts
6. 主节点到各个节点的免密登录:
ssh-keygen
ssh-copy-id -I 主机名
7. 安装ntp服务并同步时间
8. 所有节点配置ceph在线源: vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
9. 关闭主节点ssh连接询问: vim /etc/ssh/ssh_config
将# StrictHostKeyChecking ask改为 StrictHostKeyChecking no
10. 主节点安装ceph-deploy管理工具: yum -y install ceph-deploy
11. 创建主文件夹: mkdir /etc/ceph && cd /etc/ceph
12. 生成配置文件: ceph-deploy new 主机名
13. 编辑配置文件,让2个osd节点也能达到active+clean : vim ceph.conf
在最后一行添加: osd_pool_default_size = 2
14. 所有节点安装ceph: yum -y install ceph ceph-radosgw
15. 安装ceph monitor : ceph-deploy mon create 主机名
16. 收集节点key文件: ceph-deploy gatherkeys 主机名
17. 部署osd服务: ceph-deploy osd prepare 主机名:挂载路径
18. 激活osd节点: ceph-deploy osd activate 主机名:加载路径
如果报错,则把文件的权限改成ceph
19. 查看节点状态: ceph-deploy osd list 主机名
20. 获取所有节点的key文件: ceph-deploy admin 节点1 节点2
21. 各节点key文件添加读写权限: chmod +r /etc/ceph/ceph.client.admin.keyring
22. 查看osd状态: ceph -s或者ceph health
23. 存储节点,部署mds服务: ceph-deploy mds create 主机名 主机名1
24. 查看状态: ceph mds stat
25. 创建存储池: ceph osd pool create ceph_data 128
ceph osd pool create ceph2_data 128
关于创建存储池
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
少于 5 个 OSD 时可把 pg_num 设置为 128
OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
*自己计算 pg_num 取值时可借助 pgcalc 工具
26. 创建文件系统: ceph fs new 128 名字 存储池
27. 查看状态: ceph mds stat
28. 主节点查看key: cat /etc/ceph/ceph.client.admin.keyring
29. 在客户端复制一份: vim /etc/ceph/admin.secret
30. 挂载: mount -t ceph ip:6789:/ 挂载目录 -o name=admin,secretfile=/etc/ceph/admin.secret
31. 验证: df -h
挂载方法2:
1. 安装控件: yum install -y ceph-fuse
2. 挂载: ceph-fuse -m ip:6789 挂载目录
3. 验证:df -h
如果挂载不成功,需要将主节点的/etc/ceph/ceph.client.admin.keyring和 /etc/ceph/ceph.conf
拷贝到客户端的/etc/ceph目录下即可hadoop高性能计算集群
- 所有节点创建hadoop用户: useradd -u 8000 hadoop;echo 123456 | passwd —stdin hadoop
2. 所有节点上传jdk和hadoop文件到服务器
3. 主节点配置免密登录: ssh-keygen
ssh-copy-id -i 节点ip
4. 所有节点安装jdk: rpm -ivh jdk
5. 验证是否成功: java -version
6. 可以切换到hadoop用户上传,或者直接移动: mv hadoop-3.0.0.tar.gz /home/hadoop/ && chown hadoop:hadoop /home/hadoop/hadoop-3.0.0.tar.gz
7. 切换到hadoop的账号: su - hadoop
8. 解压hadoop压缩包: tar xf hadoop
9. 创建hadoop相关的目录: mkdir -p /home/hadoop/dfs/name /home/hadoop/dfs/data /home/hadoop/tmp
10. 配置hadoop-env.sh 指定java运行环境: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hadoop-env.sh
改:54 # export JAVA_HOME= 为: export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
11. 配置core-site.xml 指定访问hadoop web界面访问路径: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/core-site.xml
fs.defaultFS
hdfs://xuegod63:9000
io.file.buffer.size
13107
hadoop.tmp.dir
file:/home/hadoop/tmp
Abase for other temporary directories.
12. 配置hdfs文件: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hdfs-site.xml
dfs.namenode.secondary.http-address
test63:9001 # 通过web来看hdfs状态
dfs.namenode.name.dir
file:/home/hadoop/dfs/name
dfs.datanode.data.dir
file:/home/hadoop/dfs/data
dfs.replication
2 # 每个block有2个备份
dfs.webhdfs.enabled
true
13. 修改mapreduce任务的配置: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
0.0.0.0:10020
mapreduce.jobhistory.webapp.address
0.0.0.0:19888
14. 配置yarn框架,任务启动的位置: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
test63:8032
yarn.resourcemanager.scheduler.address
test63:8030
yarn.resourcemanager.resource-tracker.address
test63:8031
yarn.resourcemanager.admin.address
test63:8033
yarn.resourcemanager.webapp.address
test63:8088 yarn.application.classpath /home/hadoop/hadoop-3.0.0/etc/hadoop:/home/hadoop/hadoop-3.0.0/share/hadoop/common/lib/:/home/hadoop/hadoop-3.0.0/share/hadoop/common/:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/:/home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/
15. 在workers配置文件中指定node节点: vim /home/hadoop/hadoop-3.0.0/etc/hadoop/workers
16. 生成基于hadoop用户的免密登录: ssh-keygen
ssh-copy-id 主机名
17. 把配置文件发送到其他平台: scp -r /home/hadoop/hadoop-3.0.0 hadoop@xuegod64:~/
18. 主节点初始化文件: /home/hadoop/hadoop-3.0.0/bin/hdfs namenode -format
19. 切换到root用户,安装tree命令,在切换回hadoop
20. 查看是否成功: tree /home/hadoop/dfs/
21. 启动hdfs分布式存储集群: /home/hadoop/hadoop-3.0.0/sbin/start-dfs.sh
关闭方法: /home/hadoop/hadoop-3.0.0/sbin/stop-dfs.sh
22. 主验证是否开启分布式存储: ps -axu | grep namenode
23. 从验证: ps -axu | grep datanode
24. 启动分布式计算: /home/hadoop/hadoop-3.0.0/sbin/start-yarn.sh
25. 主验证是否开启分布式计算: ps -axu | grep resourcemanager
注: start-dfs.sh 和 start-yarn.sh 这两个脚本可用 start-all.sh 代替。
/home/hadoop/hadoop-3.0.0/sbin/stop-all.sh
/home/hadoop/hadoop-3.0.0/sbin/start-all.sh
26. 开启jobhistory服务: /home/hadoop/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver
27. 启动从存储服务: /home/hadoop/hadoop-3.0.0/sbin/hadoop-daemon.sh start datanode
28. 启动资源管理从服务: /home/hadoop/hadoop-3.0.0/sbin/yarn-daemon.sh start nodemanager
29. 查看分布式集群状态: /home/hadoop/hadoop-3.0.0/bin/hdfs dfsadmin -report
web页面: http://192.168.1.63:9870/dfshealth.html#tab-datanode
30. 通过web查看集群状态: http://192.168.1.63:8088
31. 查看历史任务内容: http://192.168.1.63:16888/jobhistory
32. 切换root写入环境变量: vim /etc/profile
export HADOOP_HOME=/home/hadoop/hadoop-3.0.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
33. 让配置生效: source /etc/profile
34. 随便写配置文件: vim file01.txt
man
kong
man
Hello World
mk
35. 写两个做实验: vim file02.txt
mk
www.xuegod.cn
cd
cat
man
36. 查看hadoop目录情况: hadoop fs -ls /
37. 创建一个文件夹: hadoop fs -mkdir -p /input
38. 导入文件到新目录: hadoop fs -put file /input
39. 查看是否导入成功: hadoop fs -cat /input/file01.txt
40. 执行单词汇总的计算: hadoop jar /home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount /input /output
41. 查看运行后的文件夹: hadoop fs -ls /output
42. 查看结果: hadoop fs -cat /output/part-r-00000
redis集群
一、独立架设
1.首先安装epel源: yum -y install epel-release
2.安装remi源 : yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
注: Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护
3. 指定用remi源安装redis: yum —enablerepo=remi install -y redis
注: Remi源是否认不启动的,在需求使用时,可以指定用—enablerepo=remi选项
4. 检查版本: redis-cli —version
5. 启动redis并验证: systemctl start redis && netstat -anutp | grep redis
6. 编辑配置文件: vim /etc/redis.conf
改 69 bind 127.0.0.1 为 69 bind 0.0.0.0 # redis的监听地址,默认监听在127.0.0.1上,改为0.0.0.0或者本机ip
参数解释,可以不变:
protected-mode yes #禁止外网访问,如果开启了只能通过本机回环口地址来访问redis
port 6379 # 开启端口
tcp-backlog 511 # 指定tcp-backlog的长度。当redis处理过来不时,需要等待的请求队列会通过backlog来缓存。backlog的数量决定了缓存的队列数
unixsocket /run/redis.sock # 指定sock文件通信和sock文件位置,如果服务端和客户都在同一台主机上,建议打开
unixsocketperm 700 # 定义sock文件的访问权限
timeout 0 # 表示当客户端连接成功后,空间多长时间超时,0表示不启动该功能
tcp-keepalive 300 # 定义是否启动长连接功能
daemonize no # 如果需要在后台运行,该为yes。如果是yum可以用no,如果源码安装需要改成yes
supervised auto # 定义是upstart还是systemd接管redis进程
loglevel notice # 定义日志级别
logfile /var/log/redis/redis.log # 日志保存路径
databases 16 # 定义redis默认有多少databases,但是分布式中,只能使用一个
masterauth
maxclients 10000 # 设置同时连接redis客户端的最大数量
7. 登录redis数据库: redis-cli
-h 指定主机ip
-p 指定端口socket文件
8. 设置键值: set system centos
9. 获取键值: get system
10. 定义一个键值,并设置过期时间为60秒: set name yinzijian EX 60
11. 查看所有key: keys *
二、开启认证
1.修改配置文件: vim /etc/redis
改 507 # requirepass foobared 为 507 requirepass 123456
2. 重启: systemctl restart redis
3. 登录: redis-cli
auth 密码
三、持久化配置
Redis 持久化有三种实现方法:RDB 和 AOF、混合模式
rdb 适合全量备份,文件支持压缩,二进制格式,相比于aof来说占用空间比较小,加载的速度更快
aof 它是一种文本格式的文件,相对rdb占用空间比较大,可以开启aof重写
混合模式 结合rdb和aof两种持久化方式的优点,默认是开启的(aof-use-rdb-preamble = yes)
1. 配置文件中和RDB相关的参数:
stop-writes-on-bgsave-error yes # 使用快照备份时,一旦发生错误的话是否停止
rdbcompression yes # RDB文件是否使用压缩,压缩会消耗CPU
rdbchecksum yes # 是否对 RDB 文件做校验码检测
dbfilename dump.rdb # 定义RDB文件的名称
dir /var/lib/redis # 定义存放路径
save 3600 1 # 在3600秒内,如果至少有1个key发生变化,储存
save 300 100
save 60 10000
2. AOF持久化配置:
appendonly yes # 开启AOF持久化配置
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。
auto-aof-rewrite-percentage 100 (一倍) # 存储文件比上次大一倍才压缩
auto-aof-rewrite-min-size 64mb # 存储文件大于64mb才压缩
3. 混合压缩配置 :
aof‐use‐rdb‐preamble yes # 开启混合持久化,前提是要先开启AOF
四、搭建redis主从复制架构
1.主从机安装redis: yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum —enablerepo=remi install -y redis
2. 修改主机配置文件: vim /etc/redis.conf
改: bind 127.0.0.1 为 bind 0.0.0.0 # 监听所有地址,或者改为本机ip
改: # requirepass foobared 为 requirepass 123456 # 指定密码为123456
3. 重启主机: systemctl restart redis
4. 验证: netstat -anutp |grep redis
5. 从机修改配置文件: vim /etc/redis.conf
改: # replicaof
改: # masterauth
6.启动redis: systemctl start redis
7.验证是否启动成功: netstat -anutp |grep redis
8.主机登录redis查看主从是否成功: info replication
9.从服务有关主从复制的高级配置参数:
replica-serve-stale-data yes # 当 slave 端在主从复制的过程中与 master 端断开了连接,此时有 2 种处理方法:一种是继续提供服务即使数据可能不是最新的,另一种是对请求返回一个错误信息,默认配置是继续提供服务
replica-read-only yes # 从机只读
repl-diskless-sync no # 默认不使用diskless同步方式
repl-diskless-sync-delay 5 # 无磁盘 diskless 方式在进行数据传递之前会有一个时间的延迟,以便 slave 端能够进行到待传送的目标队列中,这个时间默认是 5 秒
repl-ping-replica-period 10 # 从向主发送pings的时间区间配置,默认为10秒
repl-timeout 60 # 设置超时时间
repl-disable-tcp-nodelay no # 是否启用 TCP_NODELAY,如果启用则会使用少量的 TCP包和带宽去进行数据传输到从端,当然速度会比较慢;如果不启用则传输速度比较快,但是会占用比较多的带宽。
repl-backlog-size 1mb # 设置 backlog 的大小,backlog 是一个缓冲区,在从端失连时存放要同步到从的数据,因此当一个从要重连时,经常是不需要完全同步的,执行局部同步就足够了。backlog 设置的越大,从可以失连的时间就越长。
repl-backlog-ttl 3600 # 如果一段时间后没有从连接到主,则 backlog size 的内存将会被释放。如果值为 0 则表示永远不释放这部份内存。 默认是 3600 秒
replica-priority 100 # 从端优先级设置,值是一个整数,数字越小表示优先级越高。当 master 故障时将会按照优先级来选择 slave 端进行恢复,如果值设置为 0,则表示该 slave 永远不会被选择。
min-replicas-to-write 3
min-replicas-max-lag 10 # 这两行的意思是,设置当一个主的可用从少于 N个,延迟时间大于 M 秒时,不接收写操作。当可用的从服务器少于 3 个或网络延迟时间大于 10秒时,主将拒绝接收用户的写请求
五、使用sentinel实现redis高可用集群
1.在三台机器上安装redis: yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum —enablerepo=remi install -y redis
2. 修改主机监听端口: vim /etc/redis.conf
改:69 bind 127.0.0.1 为:69 bind 0.0.0.0 # 监听所有地址
改 :88 protected-mode yes 为:88 protected-mode no # 开放外网访问
3. 重启redis: systemctl restart redis
4. 配置从服务器: vim /etc/redis.conf
改 69 bind 127.0.0.1 为 69 bind 0.0.0.0
改 88 protected-mode yes 为 88 protected-mode no
改 286 # replicaof
5. 一台主两台从验证,登录redis: info replication
6. 主机配置sentinel1: vim /etc/redis-sentinel.conf
改 26 daemonize no 为 26 daemonize yes
改 sentinel monitor mymaster 127.0.0.1 6379 2 为 sentinel monitor mymaster ip 6379 2
sentinel monitor
改:125 sentinel down-after-milliseconds mymaster 30000 为 sentinel down-after-milliseconds mymaster 10000
91 sentinel parallel-syncs mymaster 1 #保存默认
改:166 sentinel failover-timeout mymaster 180000 为:166 sentinel failover-timeout mymaster 60000
7. 把配置文件发给从机: scp /etc/redis-sentinel.conf xx:/etc/redis-sentinel.conf
8.启动redis和redis集群: systemctl restart redis && systemctl start redis-sentinel
9.登录,查看主从状态: info replication
10。查看集群状态: redis-cli -h 192.168.1.65 -p 26379
info sentinel
jumpserver堡垒机
注:最新版本的jumpserver需要mariadb10.2以上版本,redis需要5.0以上
mariadb yum源:
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64/
gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
redis 5.0 源码安装地址:
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
- 导入主程序包和扩展包
2. 安装依赖: yum -y install wget gcc epel-release git
3. 安装redis数据库: yum -y install redis
4. redis开机启动: systemctl enable redis && systemctl start redis
5. 安装mariadb : yum -y install mariadb mariadb-devel mariadb-server
6. mariadb开机启动 : systemctl enable mariadb && systemctl start mariadb
7. 设置数据库密码: mysqladmin -uroot password 密码
8. 创建数据库: mysql -uroot -p密码 -e “create database jumpserver default charset ‘utf8’ collate ‘utf8_bin’; “
9. 创建jumpserver用户: mysql -uroot -p密码 -e “ grant all on jumpserver. to ‘jumpserver’@’127.0.0.1’ identified by ‘jumpserver’;”
10. 刷新权限: mysql -uroot -p密码 -e “ flush privileges;”
11. 测试是否能登录: mysql -ujumpserver -pjumpserver -h 127.0.0.1
12. 安装nginx : yum -y install nginx
13. nginx开机启动: systemctl enable nginx && systemctl start nginx
14. 安装python3.6版本: yum -y install python36 python36-devel
15. 创建python3虚拟环境: python3.6 -m venv py3
16. 加载虚拟环境: source /opt/py3/bin/activate
17. 解压jumpserver主程序包: tar xf jumpserver-v2.9.2.tar.gz
18. 安装jumpserver依赖包: yum -y install $(cat 安装目录/requirements/rpm_requirements.txt)
19. 升级pip: pip install —upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
pip install wheel -i https://mirrors.aliyun.com/pypi/simple/
pip install setuptools -i https://mirrors.aliyun.com/pypi/simple/
20. 下载py依赖: pip install -r 安装目录/requirements/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
21. 创建配置文件: cp 安装目录/config_example.yml 安装目录/config.yml
22. 编辑配置文件: vim 安装目录/config.yml
SECRET_KEY: 自己编写秘钥
BOOTSTRAP_TOKEN: 自己编写注册token
# DEBUG: true 改为 DEBUG: false 关闭debug输出
# LOG_LEVEL: DEBUG 改为 LOG_LEVEL:ERROR 设置日志级别
# SESSION_EXPIRE_AT_BROWSER_CLOSE: false 改为 SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_PASSWORD: 数据库jumpserver的账号密码
23. 启动: 安装目录/jms start -d
24. 配置systemctl管理jumpserver: wget -O /usr/lib/systemd/system/jms.service https://demo.jumpserver.org/download/shell/centos/jms.service
25. 安装docker依赖: yum install -y yum-utils device-mapper-persistent-data lvm2
26. 配置docker的yum源: yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
27. 安装docker: yum install docker-ce docker-ce-cli containerd.io -y
28. 启动docker: systemctl start docker && systemctl enable docker.service
29. 加载koko镜像: docker load -i jms_koko.tar.gz
注: koko 为 SSH Server 和 Web Terminal Server。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产。
30. 启动镜像: docker run —name jms_koko -d -p 2222:2222 -p 127.0.0.1:5000:5000 -e CORE_HOST=http://192.168.1.85:8080 -e BOOTSTRAP_TOKEN=Yinzijian -e LOG_LEVEL=ERROR —restart=always jumpserver/jms_koko:v2.1.1
30. 加载guacamole镜像: docker load -i jms_guacamole.tar.gz
注: Guacamole 为 RDP 协议和 VNC 协议资产组件,用户可以通过 Web Terminal 来连接 RDP 协议和VNC 协议资产(暂时只能通过 Web Terminal 来访问)。
31. 启动镜像: docker run —name jms_guacamole -d -p 127.0.0.1:8081:8080 -e JUMPSERVER_SERVER=http://192.168.1.85:8080 -e BOOTSTRAP_TOKEN=Yinzijian -e GUACAMOLE_LOG_LEVEL=ERROR —restart=always jumpserver/jms_guacamole:v2.1.1
32. 配置lina组件 : tar xf lina-v2.1.1.tar.gz -C /opt/
注: :Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件。
33. 授权: chown -R nginx:nginx /opt/lina/
34. 配置luna组件:配置方法同nima组件方法
35. 配置nginx代理: vim /etc/nginx/conf.d/jumpserver.conf
server {
listen 80;
client_max_body_size 100m; # 录像及文件上传大小限制
location /ui/ {
try_files $uri / /index.html;
alias /opt/lina/;
}
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路径, 如果修改安装目录, 此处需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 录像位置, 如果修改安装目录, 此处需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 静态资源, 如果修改安装目录, 此处需要修改
}
location /koko/ {
proxy_pass http://localhost:5000;
proxy_buffering off;
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 Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ {
proxy_pass http://localhost:8081/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /ws/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8070;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
location /api/ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /core/ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
rewrite ^/(.)$ /ui/$1 last;
}
}
36. 编辑nginx配置 : vim /etc/nginx/nginx.conf
找到监听80的server标签,然后注释
37. 检测配置: nginx -t
38. 重载服务: nginx -s reload
