今日内容:
- LVS负载均衡
- OpenVPN加密通信隧道
- JumpServer跳板机
一、负载均衡介绍
1.1 常见负载均衡对比
常见负载均衡对比 |
优势 |
缺点 |
硬件:如F5负载均衡 |
性能好、购买有技术支持 |
价格昂贵,且一次需要购买2台凑成1对。 |
LVS |
工作在4层,效率极其高 |
需要部署维护(运维成本较高) |
Nginx/Tengine/Openresty(lua) |
使用简单,支持4层(1.9版本后支持)和7层负载均衡、反向代理、缓存、流量镜像(mirror) |
处理数据为 “代理模式”,即替用户去查找,找到后发送给用户。在并发较大(1w以 上)时会卡 |
Haproxy |
相对复杂 支持4层和7层 反向代理 动态加载配置文件. |
处理数据为“代理模式”,并发较大(1w以上,但比nginx多) 时会卡 |
云服务:如clb(slb) |
支持4层和7层 |
只能支持url或者域名的转发 |
ALB |
支持更多的7层的转发功能 ,如基于用户请求头 http_user_agent、用户语言、 镜像流量(申请,深圳) |
只支持7层负载均衡 |
四层负载均衡和七层负载均衡的对比:
- 四层负载均衡:在传输层,负载均衡最多到端口级别
- 七层负载均衡,在应用层,URL、URI 转发、HTTP HTTPS
1.2 反向代理和负载均衡的区别
反向代理:Nginx / Haproxy做代理,代替用户找,找到后发给用户
负载均衡:VS对数据进行转发
1.3 ARP地址解析
DNS域名解析:域名 解析成 IP
ARP地址解析:IP 解析成 Mac地址
1.3.1 ARP欺骗
二、LVS快速上手
2.1 LVS概述
LVS的工作模式:
- DR 模式
- NAT 模式
- TUN隧道模式
- FLL NAT 完全NAT模式
关键词:
名称 |
单词 |
含义 |
CIP |
client ip |
客户端ip地址 |
VIP |
Virtual ip |
虚拟ip |
DIP |
director ip |
负载均衡本身的ip |
RS服务器 |
real server |
真实服务器 处理用户请求. |
RIP |
Real erver IP |
real server ip 真实服务器的ip地址 |
2.2 LVS-DR模式上手
2.2.1 环境准备
主机 |
作用 |
真实ip |
虚拟IP(vip) |
lb01 |
LVS主服务器 |
10.0.0.5 |
10.0.0.3 |
web01 |
nginx-01 |
10.0.0.7 |
数据转向10.0.0.3 |
web02 |
nginx-02 |
10.0.0.8 |
数据转向10.0.0.3 |
2.2.2 前提处理
1、web01和web02准备站点
2、lb01和lb02关闭不需要的服务,安装LVS
2.2.3 DR模式配置流程
2.2.3.1 LVS服务器配置
1、手动添加VIP,后面是由Keepalived生成(需先把网卡名改成eth0)
永久保存
2、添加规则 (类似于nginx的upstream)
3、添加规则(类似于向upstream中添加server)
类似于使用Nginx配置负载均衡
4、查看LVS规则
2.2.3.2 后端web服务器配置
1、lo网卡绑定
永久保存
重启网络并查看
2、抑制ARP解析
2.2.3.3 测试
多次访问http://10.0.0.3:80,应该指向不同的web服务端
2.2.4 LVS规则的备份和恢复
1、保存配置和还原
2、清空LVS规则,记得清空前备份
2.3 LVS与keepalived结合
2.3.1 环境准备
主机 |
作用 |
真实ip |
虚拟IP(vip) |
lb01 |
LVS主服务器 |
10.0.0.5 |
10.0.0.3 |
lb01 |
LVS备服务器 |
10.0.0.6 |
10.0.0.3 |
web01 |
nginx-01 |
10.0.0.7 |
数据转向10.0.0.3 |
web02 |
nginx-02 |
10.0.0.8 |
数据转向10.0.0.3 |
2.3.2 DS服务器配置
1)DS1配置LVS+Keepalived
配置前,先清空LVS的规则和eth0:0接口,因为keepalived会自动创建
2)DS2配置LVS+Keepalived
把配置文件中的MASTER
改为BACKUP
即可
2.3.3 RS服务器配置
两台服务器参考2.2.3.2
章节配置即可
2.3.4 测试
1) keepalived的主备切换
启动服务后,默认lb01是主,并且有生成10.0.0.3的网络接口
lb02为备,不生成10.0.0.3网络接口
关闭lb01的keepalived服务,手动造成故障
lb02切换为主,验证成功
2) LVS的负载均衡测试
访问http://10.0.0.3:80,可见访问web01和web02循环。
查看LVS规则流量信息,确保两条路都有流量,验证成功
二、加密隧道服务
2.1 应用场景
两点之间如何传输数据最安全?
- 方案1:铺设专线,成本高昂
- 方案2:使用硬件3层路由、硬件VPN设备(如深信服VPN)
- 方案3:使用公有云等商业产品,通过网络传输
- 方案4:使用开源软件搭建VPN(如OpenVPN)
加密隧道服务即是其中的方案4,OpenVPN有如下应用场景:
- 运营:通过OpenVPN实现网站安全登录(后台地址,设置为只能通过VPN登录)
- 开发:通过OpenVPN实现开发与测试人员连接网站,进行开发测试
- 运维:通过OpenVPN连接内网服务器进行管理
2.2 OpenVPN原理图
2.3 OpenVPN快速上手
2.3.1 环境准备
主机 |
ip |
作用 |
m01 |
10.0.0.61 / 172.16.1.61 |
openvpn server服务端 |
db01 |
10.0.0.51 / 172.16.1.51 |
内网服务器 |
windows 笔记本 |
192.168.1.103 |
openvpn客户端 |
2.3.2 服务端创建证书
1)安装工具
2)创建CA证书
修改vars文件,配置证书参数
初始化
生成证书
生成后的证书文件
3)创建server证书
1、创建server证书请求文件与服务器私钥,nopass表示不加密私钥文件,其他默认即可
2、给server端证书签名,并生成server证书文件
4)创建client证书
1、创建client证书请求文件和私钥
2、给client端证书签名,生成client证书文件
5)创建dh-pem算法文件
密钥交换时的认证方法
6)目录汇总
服务端生成文件的作用
2.3.3 服务端配置文件,启动服务
openvpn安装完之后的目录
创建服务端配置文件
拷贝证书到对应目录中
启动服务
启动后如果设置了密码,需要输入
查看进程状态
查看路由状态
2.3.4 客户端配置文件,连接访问
1)安装OpenVPN客户端
windows下载安装OpenVPN-GUI
2)准备配置文件
将客户端需要的文件拷贝出来,放到一起
创建ovpn文件
存放的目录可以在OpenVPN客户端中指定
全部文件如下
3)连接OpenVPN和测试
右键小图标 — 连接,成功后变为绿色状态
测试访问服务端内网的172网段,测试成功
2.4 OpenVPN连接内网
应用场景:
目前我们可以已经可以通过OpenVPN来连接内网的mn01服务器(172.16.1.61),但是内网的其他的服务器仍是访问不到的,比如db01(172.16.1.51)
原因是什么?
让我们来解决这个问题吧!
1、服务端mn01:开启内核转发功能
2、内网服务器db01:添加路由规则(回来的路由)
OK,再试试,已经通了!
2.5 OpenVPN密码认证
方便设置客户端帐号,如:
用户分离 |
服务端 |
ca.crt |
server.key |
server.crt |
客户端-张三 |
ca.crt |
zhangsan.key |
zhangsan.crt |
zhagnsan.ovpn |
客户端-托马斯-gao |
ca.crt |
tomcat-gao.key |
tomcat-gao.crt |
tomcat-gao.ovpn |
2.5.1 服务端开启密码认证功能
1、修改配置文件,添加四行
2、创建check.sh脚本文件
3、脚本设置执行权限
4、创建用户和密码文件
5、重启服务
2.5.2 客户端连接
1)手动输入帐号密码的方式
修改配置文件,关闭秘钥认证,开启密码认证
测试连接,会弹出输入帐号密码的框
连接成功
2)保存到文件的方式
创建一个保存帐号密码的文件
在ovpn配置文件中指定即可
三、JumpServer跳板机
为什么需要使用跳板机?
- 普通日常运维一般使用远程连接工具,一台台登录,这种方式虽然方便,但是不方便做行为审计,如何时何地做了什么?难以批量管理。
- 自动化运维推荐使用跳板机管理服务器,不仅方便审计,还可以利用自动化工具对服务器进行批量管理。
3.1 常用跳板机选择
跳板机 |
|
teleport |
功能简单,使用方便,简约风 |
Jms(JumpServer) |
功能详细,需要系统配置要求会更高 |
其他开源软件… |
|
商业软件/硬件 |
|
3.2 实验环境准备
主机 |
IP |
用途 |
jms01 |
10.0.0.65 |
跳板机 |
web01 |
10.0.0.5 |
被管理机器 |
web02 |
10.0.0.6 |
被管理机器 |
3.3 快速上手 - 单机部署
选用开源软件 JumpServer
官网:https://www.jumpserver.org/
3.3.1 下载安装包
1、下载安装包,上传至服务器
2、安装依赖包
3.3.2 部署数据库和缓存
1、部署MySQL数据库,(PostgreSQL、MySQL 或 MariaDB 三选一)
安装方式参考连接中的5.2.2节,至服务启动
创建jumpserver数据库
创建jumpserver用户,用于连接jumpserver数据库
修改MySQL的ROOT密码
2、部署Redis(源码方式)
3.3.4 部署docker和docker-compose
在线安装方法
离线安装方法(采用)
安装docker-compose
3.3.3 部署Jumpserver(离线安装)
离线安装目前只支持 linux/amd64架构,其他架构需要在线安装
1、设置
2、执行安装
安装成功的显示
3、启动命令
4、80端口访问站点
初始密码:admin / admin
5、进入管理页面后,配置资产、授权等页面,实现跳板机访问内网服务器