This commit is contained in:
457
资源安装/KVM虚拟化.md
Normal file
457
资源安装/KVM虚拟化.md
Normal file
@@ -0,0 +1,457 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# KVM虚拟化
|
||||
|
||||
> 文档真难找!!可恶
|
||||
|
||||
[官方文档](https://www.linux-kvm.org/page/HOWTO)
|
||||
|
||||
[官网导航页](https://www.linux-kvm.org/page/Category:Docs)
|
||||
|
||||
[内核要求](https://www.linux-kvm.org/page/Choose_the_right_kvm_%26_kernel_version)
|
||||
|
||||
[Ubuntu部署文档](https://www.linux-kvm.org/page/RunningKVM)
|
||||
|
||||
[VNC链接工具RealVNC下载](https://www.realvnc.com/en/connect/download/vnc/)
|
||||
|
||||
## 开始部署KVM
|
||||
|
||||
### 环境准备
|
||||
|
||||
1. 关闭 SELINUX
|
||||
|
||||
```bash
|
||||
setenforce 0
|
||||
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
|
||||
```
|
||||
|
||||
2. 关闭防火墙
|
||||
|
||||
```bash
|
||||
systemctl stop firewalld
|
||||
systemctl disable firewalld
|
||||
```
|
||||
|
||||
3. 查看CPU是否支持硬件虚拟化
|
||||
|
||||
- vmx: Intel VT-x
|
||||
- svm: AMD AMD-v
|
||||
|
||||
```bash
|
||||
egrep -i 'vmx|svm|lm' /proc/cpuinfo
|
||||
```
|
||||
|
||||
4. 检查 KVM 模块当前是否加载
|
||||
|
||||
```bash
|
||||
lsmod | grep kvm
|
||||
```
|
||||
|
||||
5. 加载模块
|
||||
|
||||
```bash
|
||||
echo "kvm" >> /etc/modules-load.d/kvm.conf
|
||||
modprobe kvm
|
||||
```
|
||||
|
||||
6. 加载适当的模块
|
||||
|
||||
```bash
|
||||
modprobe kvm_intel # Intel processors
|
||||
modprobe kvm_amd # AMD processors
|
||||
```
|
||||
|
||||
### 开始安装
|
||||
|
||||
- Centos安装
|
||||
|
||||
1. 安装KVM
|
||||
|
||||
```
|
||||
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager -y
|
||||
```
|
||||
|
||||
2. 启动
|
||||
|
||||
```bash
|
||||
systemctl enable libvirtd && systemctl start libvirtd
|
||||
```
|
||||
|
||||
- Ubuntu安装
|
||||
|
||||
1. 安装KVM
|
||||
|
||||
```bash
|
||||
apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev libpci-dev
|
||||
```
|
||||
|
||||
2. 启动
|
||||
|
||||
```bash
|
||||
systemctl enable libvirtd && systemctl start libvirtd
|
||||
```
|
||||
|
||||
### 网卡配置
|
||||
|
||||
1. 编辑默认文件
|
||||
|
||||
```bash
|
||||
vi /etc/libvirt/qemu/networks/default.xml
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```xml
|
||||
<network>
|
||||
<name>default</name>
|
||||
<uuid>1113ac18-e430-4940-a412-6e838c42efbc</uuid> #不是必要的可以注释
|
||||
<forward mode='nat'/>
|
||||
<bridge name='virbr0' stp='on' delay='0'/>
|
||||
<mac address='52:54:00:c1:cd:3e'/> #不是必要的可以注释
|
||||
<ip address='192.168.100.1' netmask='255.255.255.0'>
|
||||
<dhcp>
|
||||
<range start='192.168.100.2' end='192.168.100.254'/>
|
||||
</dhcp>
|
||||
</ip>
|
||||
</network>
|
||||
```
|
||||
|
||||
2. 重载配置
|
||||
|
||||
```bash
|
||||
virsh net-define /etc/libvirt/qemu/networks/default.xml
|
||||
```
|
||||
|
||||
3. 重启网络
|
||||
|
||||
```bash
|
||||
virsh net-destroy default && virsh net-start default
|
||||
```
|
||||
|
||||
## 启动 Windows 虚拟机
|
||||
|
||||
1. 创建一个 qcow2 格式的虚拟磁盘文件
|
||||
|
||||
```bash
|
||||
qemu-img create -f qcow2 /var/lib/libvirt/images/windows.qcow2 50G
|
||||
```
|
||||
|
||||
2. 拷贝 ISO 镜像文件到 images 下
|
||||
|
||||
```bash
|
||||
mv *.iso /var/lib/libvirt/images/windows.iso
|
||||
```
|
||||
|
||||
3. 启动 KVM 虚拟机
|
||||
|
||||
```bash
|
||||
virt-install \
|
||||
--name=windows \
|
||||
--ram=4096 \
|
||||
--vcpus=2 \
|
||||
--os-type=windows \
|
||||
--os-variant=win10 \
|
||||
--disk path=/var/lib/libvirt/images/windows.qcow2,size=50 \
|
||||
--cdrom=/var/lib/libvirt/images/windows.iso \
|
||||
--network bridge=virbr0 \
|
||||
--graphics vnc,listen=0.0.0.0,port=5901 \
|
||||
--noautoconsole
|
||||
```
|
||||
|
||||
|
||||
## 启动 Linux 虚拟机
|
||||
|
||||
> 查看KVM支持的操作系统变种和类型
|
||||
>
|
||||
> ```bash
|
||||
> osinfo-query os | grep CentOS
|
||||
> ```
|
||||
|
||||
1. 创建一个 qcow2 格式的虚拟磁盘文件
|
||||
|
||||
```bash
|
||||
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 50G
|
||||
```
|
||||
|
||||
2. 拷贝 ISO 镜像文件到 images 下
|
||||
|
||||
```bash
|
||||
mv *.iso /var/lib/libvirt/images/centos.iso
|
||||
```
|
||||
|
||||
3. 启动 KVM 虚拟机
|
||||
|
||||
```bash
|
||||
virt-install \
|
||||
--name=centos \
|
||||
--ram=4096 \
|
||||
--vcpus=2 \
|
||||
--os-type=centos7.0 \
|
||||
--os-variant=centos7.0 \
|
||||
--disk path=/var/lib/libvirt/images/centos.qcow2,size=50 \
|
||||
--cdrom=/var/lib/libvirt/images/centos.iso \
|
||||
--network bridge=virbr0 \
|
||||
--graphics vnc,listen=0.0.0.0,port=5902 \
|
||||
--noautoconsole
|
||||
```
|
||||
|
||||
## 常用命令及参数解释
|
||||
|
||||
### 命令
|
||||
|
||||
- **制作虚拟机快照**
|
||||
|
||||
```bash
|
||||
virsh snapshot-create <虚拟机名称>
|
||||
```
|
||||
|
||||
> 自定义快照名称
|
||||
>
|
||||
> ```bash
|
||||
> virsh snapshot-create-as <虚拟机名称> <快照名称>
|
||||
> ```
|
||||
>
|
||||
> 查看当前虚拟机所有快照
|
||||
>
|
||||
> ```bash
|
||||
> virsh snapshot-list <虚拟机名称>
|
||||
> ```
|
||||
>
|
||||
> 查看当前虚拟机处于哪个快照
|
||||
>
|
||||
> ```bash
|
||||
> virsh snapshot-current <虚拟机名称> | head -2
|
||||
> ```
|
||||
>
|
||||
> 恢复快照
|
||||
>
|
||||
> ```bash
|
||||
> virsh snapshot-revert <虚拟机名称> <快照名称>
|
||||
> ```
|
||||
>
|
||||
> 删除快照
|
||||
>
|
||||
> ```bash
|
||||
> virsh snapshot-delete <虚拟机名称> <快照名称>
|
||||
> ```
|
||||
|
||||
- **显示有关虚拟磁盘镜像文件的信息**
|
||||
|
||||
```bash
|
||||
qemu-img info centos.qcow2
|
||||
```
|
||||
|
||||
- **启动虚拟机**:
|
||||
|
||||
```bash
|
||||
virsh start <虚拟机名称>
|
||||
```
|
||||
|
||||
这个命令用于启动指定名称的虚拟机。
|
||||
|
||||
- **停止虚拟机**:
|
||||
|
||||
```bash
|
||||
virsh shutdown <虚拟机名称>
|
||||
```
|
||||
|
||||
通过这个命令,你可以优雅地关闭虚拟机。也可以使用 `destroy` 选项来强制关闭虚拟机。
|
||||
|
||||
- **重启虚拟机**:
|
||||
|
||||
```bash
|
||||
virsh reboot <虚拟机名称>
|
||||
```
|
||||
|
||||
这个命令用于重启虚拟机。
|
||||
|
||||
- **查看虚拟机列表**:
|
||||
|
||||
```bash
|
||||
virsh list --all
|
||||
```
|
||||
|
||||
该命令列出当前主机上正在运行的虚拟机。
|
||||
|
||||
- **创建虚拟机**:
|
||||
|
||||
```bash
|
||||
virt-install [options]
|
||||
```
|
||||
|
||||
使用 `virt-install` 命令创建新的虚拟机,可以根据需要配置虚拟机的各种参数,如名称、内存、CPU、磁盘、网络等。
|
||||
|
||||
- **删除虚拟机**:
|
||||
|
||||
```bash
|
||||
virsh undefine <虚拟机名称>
|
||||
```
|
||||
|
||||
这个命令用于删除虚拟机的定义,但保留虚拟机磁盘文件。
|
||||
|
||||
- **克隆虚拟机**:
|
||||
|
||||
```bash
|
||||
virt-clone -o <源虚拟机名称> -n <新虚拟机名称> -f <新虚拟机磁盘路径>
|
||||
```
|
||||
|
||||
使用这个命令可以克隆一个现有虚拟机,创建一个具有相同配置的新虚拟机。
|
||||
|
||||
- **查看虚拟机详细信息**:
|
||||
|
||||
```bash
|
||||
virsh dominfo <虚拟机名称>
|
||||
```
|
||||
|
||||
这个命令提供了关于指定虚拟机的详细信息,如内存、CPU使用情况等。
|
||||
|
||||
- **连接到虚拟机控制台**:
|
||||
|
||||
```bash
|
||||
virsh console <虚拟机名称>
|
||||
```
|
||||
|
||||
通过这个命令可以连接到虚拟机的控制台,类似于物理终端。
|
||||
|
||||
- **导出虚拟机配置文件**:
|
||||
|
||||
```bash
|
||||
virsh dumpxml <虚拟机名称> > <文件名>.xml
|
||||
```
|
||||
|
||||
这个命令可以将虚拟机的配置信息导出为XML格式,以便备份或迁移虚拟机。
|
||||
|
||||
- **虚拟机管理工具**:
|
||||
|
||||
```bash
|
||||
virt-manager
|
||||
```
|
||||
|
||||
这是一个虚拟机管理工具,通常拥有图形用户界面,用于创建、配置和管理虚拟机。
|
||||
|
||||
- **VNC 显示端口信息**:
|
||||
|
||||
```bash
|
||||
virsh vncdisplay <虚拟机名称>
|
||||
```
|
||||
|
||||
此命令用于获取虚拟机 "windows" 的 VNC 显示端口信息。VNC 是一种用于远程访问虚拟机图形界面的协议,该命令可用于查看虚拟机的 VNC 显示端口号。
|
||||
|
||||
- **定义虚拟机配置**:
|
||||
|
||||
```bash
|
||||
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml
|
||||
```
|
||||
|
||||
使用此命令,您可以定义(或注册)一个名为 "windows" 的虚拟机,其配置文件位于 "/etc/libvirt/qemu/windows.xml"。这将使虚拟机配置成为 libvirt 系统中的一部分,以便后续进行管理和操作。
|
||||
|
||||
- **编辑虚拟机配置**:
|
||||
|
||||
```bash
|
||||
virsh edit <虚拟机名称>
|
||||
```
|
||||
|
||||
通过执行此命令,您可以编辑虚拟机 "windows" 的配置。这将打开一个文本编辑器,允许您修改虚拟机的配置参数,例如虚拟硬件设备、CPU、内存等。编辑后,您需要保存并退出编辑器,以便应用更改。
|
||||
|
||||
- **挂起、恢复虚拟机**
|
||||
|
||||
挂起
|
||||
|
||||
```bash
|
||||
virsh suspend <虚拟机名称>
|
||||
```
|
||||
|
||||
恢复
|
||||
|
||||
```bash
|
||||
virsh resume <虚拟机名称>
|
||||
```
|
||||
|
||||
- **自动开机**
|
||||
|
||||
开启开机自启动
|
||||
|
||||
```bash
|
||||
virsh autostart <虚拟机名称>
|
||||
```
|
||||
|
||||
关闭开机自启动
|
||||
|
||||
```bash
|
||||
virsh autostart --disable <虚拟机名称>
|
||||
```
|
||||
|
||||
- **虚拟机镜像格式转换**
|
||||
|
||||
> –f :源镜像格式
|
||||
>
|
||||
> –O :目标镜像格式
|
||||
|
||||
- 将 img 转换 raw 格式
|
||||
|
||||
```bash
|
||||
qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/windows.img /var/lib/libvirt/images/windows.raw
|
||||
```
|
||||
|
||||
- 将 vmdk 转换为 qcow2
|
||||
|
||||
```bash
|
||||
qemu-img convert -f vmdk -O qcow2 /var/lib/libvirt/images/windows.vmdk /var/lib/libvirt/images/windows.qcow2
|
||||
```
|
||||
|
||||
- 将 qcow2 转换为 vmdk
|
||||
|
||||
```bash
|
||||
qemu-img convert -f qcow2 -O vmdk /var/lib/libvirt/images/windows.qcow2 /var/lib/libvirt/images/windows.vmdk
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
1. `virt-install`:这是用于创建虚拟机的命令。
|
||||
2. `--name=windows`:指定虚拟机的名称为 "windows"。
|
||||
3. `--ram=4096`:分配给虚拟机的内存大小,这里是4096 MB(4 GB)。
|
||||
4. `--vcpus=2`:分配给虚拟机的虚拟CPU核心数量,这里是2个。
|
||||
5. `--boot=cdrom`:指定虚拟机从光盘启动。
|
||||
6. `--os-type=windows`:指定虚拟机的操作系统类型为 Windows。
|
||||
7. `--os-variant=win10`:指定虚拟机的操作系统变种为 Windows 10。
|
||||
8. `--disk path=/var/lib/libvirt/images/windows.qcow2,size=50`:定义虚拟机的磁盘配置。它使用QEMU Copy-On-Write(qcow2)格式,存储路径为`/var/lib/libvirt/images/windows.qcow2`,并分配了50 GB的磁盘空间。
|
||||
9. `--cdrom=/var/lib/libvirt/images/windows.iso`:指定虚拟机的光盘映像文件路径,用于安装操作系统或引导。
|
||||
10. `--network bridge=virbr0`:配置虚拟机的网络接口,将其连接到一个虚拟网络桥接接口,名为 `virbr0`。
|
||||
11. `--graphics vnc,listen=0.0.0.0,port=5901`:配置虚拟机的图形输出,使用VNC协议,并监听所有可用网络接口(0.0.0.0),端口号为5901。
|
||||
12. `--noautoconsole`:禁止自动连接到虚拟机的控制台,这意味着不会在命令行中自动打开虚拟机的控制台,你需要手动连接到VNC端口5901来查看虚拟机的图形界面。
|
||||
|
||||
### 镜像格式
|
||||
|
||||
1. **Raw(.raw)**:
|
||||
- Raw格式是一种未经压缩或处理的纯二进制磁盘映像格式。
|
||||
- 这是一种较为简单的格式,通常用于兼容多个虚拟化平台。
|
||||
- Raw格式通常没有额外的特性,如快照或压缩。
|
||||
2. **Cow(Copy-On-Write)**:
|
||||
- Cow格式是一种写时复制格式,也称为差异磁盘映像。
|
||||
- Cow格式的磁盘文件只保存虚拟机中已经发生更改的数据,而不是整个虚拟硬盘。
|
||||
- 这可以减小虚拟硬盘的大小,但可能会导致性能损失。
|
||||
3. **Qcow(.qcow)**:
|
||||
- Qcow是QEMU的一种虚拟磁盘格式,类似于Cow格式。
|
||||
- 它支持写时复制技术,允许快速创建虚拟机快照。
|
||||
- Qcow格式通常比Raw格式更节省磁盘空间。
|
||||
4. **Qcow2(.qcow2)**:
|
||||
- Qcow2是QEMU的改进版本,是一种流行的虚拟磁盘格式。
|
||||
- 它支持高级特性,如快照、压缩和加密。
|
||||
- Qcow2格式通常是一种高度灵活且性能良好的格式,适用于多种虚拟化平台。
|
||||
5. **VMDK**:
|
||||
- VMDK(Virtual Machine Disk)是VMware虚拟化软件使用的虚拟磁盘格式。
|
||||
- VMDK格式有多个子格式,包括单一精简、多精简和懒惰精简等,以满足不同的需求。
|
||||
- VMware Workstation、vSphere和其他VMware产品通常使用VMDK格式。
|
||||
|
||||
### 基础命令之控制网络
|
||||
|
||||
1. **virsh net-destroy default**:
|
||||
- 这个命令用于停止名为 "default" 的虚拟网络。虚拟网络是用来连接虚拟机的网络,类似于物理网络。通过执行这个命令,您停止了名为 "default" 的虚拟网络,中断了与该网络关联的虚拟机的网络连接。
|
||||
2. **virsh net-start default**:
|
||||
- 这个命令用于启动名为 "default" 的虚拟网络。一旦虚拟网络被停止,您可以使用这个命令来重新启动它,使其再次可用于虚拟机。
|
||||
3. **virsh net-autostart default**:
|
||||
- 这个命令用于配置虚拟网络 "default" 以在系统启动时自动启动。这意味着,当系统启动时,虚拟网络 "default" 将会自动启动,而无需手动执行 `virsh net-start` 命令。这对于确保虚拟网络的可用性很有用。
|
||||
4. **virsh net-undefine default**:
|
||||
- 这个命令用于从 `virsh` 的配置中移除名为 "default" 的虚拟网络定义。它不仅会停止虚拟网络,还会从系统中删除虚拟网络的配置。这意味着虚拟网络 "default" 不再受 `virsh` 管理,且无法再通过 `virsh` 直接管理它。
|
||||
5. **virsh net-autostart --disable virbr0**:
|
||||
- 这个命令用于禁用名为 "virbr0" 的虚拟网络在系统启动时自动启动。通过执行这个命令,您阻止了 "virbr0" 虚拟网络在系统启动时自动启动,需要手动启动它(使用 `virsh net-start virbr0`)以使其可用。
|
221
资源安装/Keepalived部署.md
Normal file
221
资源安装/Keepalived部署.md
Normal file
@@ -0,0 +1,221 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Keepalived部署使用
|
||||
|
||||
> 介绍:当前配置完全可以在大规模生产集群中使用
|
||||
|
||||
| 节点 | 网关IP | VIP |
|
||||
| :------: | :----------: | :----------: |
|
||||
| 主网关一 | 192.168.1.11 | |
|
||||
| 从网关二 | 192.168.1.12 | |
|
||||
| | | 192.168.1.10 |
|
||||
|
||||
## 安装 keepalived
|
||||
|
||||
```bash
|
||||
yum install -y keepalived
|
||||
```
|
||||
|
||||
## 主节点
|
||||
|
||||
**编辑配置文件**
|
||||
|
||||
```bash
|
||||
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
|
||||
vi /etc/keepalived/keepalived.conf
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```bash
|
||||
! Configuration File for keepalived
|
||||
|
||||
global_defs {
|
||||
router_id LVS_DEVEL # 负载均衡标识, 在局域网内应该是唯一的
|
||||
}
|
||||
|
||||
#vrrp_script check_health {
|
||||
# 检测脚本
|
||||
#script "/etc/keepalived/check_health_status.sh"
|
||||
# 执行间隔时间
|
||||
#interval 5
|
||||
#}
|
||||
|
||||
vrrp_instance VI_1 {
|
||||
# 备用状态(当 MASTER 宕机之后根据优先级提升 BACKUP 为 MASTER )
|
||||
state BACKUP
|
||||
# 网卡设备名
|
||||
interface eth0
|
||||
# 标识虚拟路由器的ID(在局域网内应该是唯一的, 0-255)
|
||||
virtual_router_id 50
|
||||
# 优先级
|
||||
priority 100
|
||||
# MASTER与BACKUP同步检查的时间间隔
|
||||
advert_int 1
|
||||
# 非抢占模式
|
||||
nopreempt
|
||||
# 本机IP地址
|
||||
unicast_src_ip 192.168.1.11
|
||||
# 对端IP地址
|
||||
unicast_peer {
|
||||
192.168.1.12
|
||||
}
|
||||
authentication {
|
||||
# 指定认证方式
|
||||
auth_type PASS
|
||||
# 指定认证所使用的密码
|
||||
auth_pass 1111
|
||||
}
|
||||
virtual_ipaddress {
|
||||
192.168.1.10/24 dev eth0
|
||||
}
|
||||
# 路由检测, 通过检测指定的网卡是否存在来判断服务是否正常
|
||||
track_interface {
|
||||
eth0
|
||||
}
|
||||
# 开启检测脚本
|
||||
#track_script {
|
||||
#check_health
|
||||
#}
|
||||
}
|
||||
```
|
||||
|
||||
## 从节点
|
||||
|
||||
**编辑配置文件**
|
||||
|
||||
```bash
|
||||
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
|
||||
vi /etc/keepalived/keepalived.conf
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```bash
|
||||
! Configuration File for keepalived
|
||||
|
||||
global_defs {
|
||||
router_id LVS_DEVEL # 负载均衡标识, 在局域网内应该是唯一的
|
||||
}
|
||||
|
||||
#vrrp_script check_health {
|
||||
# 检测脚本
|
||||
#script "/etc/keepalived/check_health_status.sh"
|
||||
# 执行间隔时间
|
||||
#interval 5
|
||||
#}
|
||||
|
||||
vrrp_instance VI_1 {
|
||||
# 备用状态(当 MASTER 宕机之后根据优先级提升 BACKUP 为 MASTER )
|
||||
state BACKUP
|
||||
# 网卡设备名
|
||||
interface eth0
|
||||
# 标识虚拟路由器的ID(在局域网内应该是唯一的, 0-255)
|
||||
virtual_router_id 50
|
||||
# 优先级
|
||||
priority 50
|
||||
# MASTER与BACKUP同步检查的时间间隔
|
||||
advert_int 1
|
||||
# 非抢占模式
|
||||
nopreempt
|
||||
# 本机IP地址
|
||||
unicast_src_ip 192.168.1.12
|
||||
# 对端IP地址
|
||||
unicast_peer {
|
||||
192.168.1.11
|
||||
}
|
||||
authentication {
|
||||
# 指定认证方式
|
||||
auth_type PASS
|
||||
# 指定认证所使用的密码
|
||||
auth_pass 1111
|
||||
}
|
||||
virtual_ipaddress {
|
||||
192.168.1.10/24 dev eth0
|
||||
}
|
||||
|
||||
# 路由检测, 通过检测指定的网卡是否存在来判断服务是否正常
|
||||
track_interface {
|
||||
eth0
|
||||
}
|
||||
# 开启检测脚本
|
||||
#track_script {
|
||||
#check_health
|
||||
#}
|
||||
}
|
||||
```
|
||||
|
||||
## 启动 keepalived
|
||||
|
||||
```bash
|
||||
systemctl start keepalived
|
||||
systemctl enable keepalived
|
||||
systemctl status keepalived
|
||||
```
|
||||
|
||||
## 配置健康检测
|
||||
|
||||
1. 编辑脚本
|
||||
|
||||
```bash
|
||||
vi /etc/keepalived/check_health_status.sh
|
||||
```
|
||||
|
||||
内容如下
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
/usr/bin/curl -I http://localhost:10254/healthz
|
||||
|
||||
if [ $? -ne 0 ];then
|
||||
|
||||
cat /var/run/keepalived.pid | xargs kill
|
||||
|
||||
fi
|
||||
```
|
||||
|
||||
2. 授权
|
||||
|
||||
```bash
|
||||
chmod +x /etc/keepalived/check_health_status.sh
|
||||
```
|
||||
|
||||
3. 确保服务启动后,编辑 keepalived 配置文件取消检测注释,重启后生效
|
||||
|
||||
```bash
|
||||
systemctl restart keepalived
|
||||
```
|
||||
|
||||
## 配置 Keepalived 自恢复
|
||||
|
||||
> 更改 Keepalived Systemd 配置文件, 加入如下内容, Keepalived会一直重启检测服务是否恢复正常
|
||||
|
||||
```bash
|
||||
vi /lib/systemd/system/keepalived.service
|
||||
```
|
||||
|
||||
```bash
|
||||
[Service]
|
||||
# 总是重启该服务
|
||||
Restart=always
|
||||
# 重启间隔时间
|
||||
RestartSec=10
|
||||
```
|
||||
|
||||
## 防火墙配置
|
||||
|
||||
> 开放其中一种即可
|
||||
|
||||
- 允许vrrp流量
|
||||
|
||||
```bash
|
||||
iptables -A INPUT -p vrrp -j ACCEPT
|
||||
```
|
||||
|
||||
- 允许组播流量
|
||||
|
||||
```bash
|
||||
iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
|
||||
```
|
||||
|
||||
|
250
资源安装/Mysql双主部署.md
Normal file
250
资源安装/Mysql双主部署.md
Normal file
@@ -0,0 +1,250 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# 部署 Mysql 双主
|
||||
|
||||
[Mysql-Rpm文件下载](https://dev.mysql.com/downloads/repo/yum/)
|
||||
|
||||
## 部署
|
||||
|
||||
> 双节点都执行以下操作
|
||||
|
||||
1. 下载 Mysql Rpm 文件
|
||||
|
||||
```bash
|
||||
yum install -y wget
|
||||
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
|
||||
```
|
||||
|
||||
2. 安装 MySQL
|
||||
|
||||
```bash
|
||||
yum install -y mysql80-community-release-el7-7.noarch.rpm
|
||||
yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
|
||||
```
|
||||
|
||||
3. 启动 MySQL Server
|
||||
|
||||
```bash
|
||||
systemctl start mysqld
|
||||
systemctl enable mysqld
|
||||
systemctl status mysqld
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
1. 查看临时密码
|
||||
|
||||
```bash
|
||||
grep 'temporary password' /var/log/mysqld.log
|
||||
```
|
||||
|
||||
2. 修改临时密码并配置允许远程登录
|
||||
|
||||
```sql
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
|
||||
USE mysql;
|
||||
UPDATE user SET host = '%' WHERE user = 'root';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
### Mysql 1号主节点配置
|
||||
|
||||
1. 停止数据库
|
||||
|
||||
```bash
|
||||
systemctl stop mysqld
|
||||
```
|
||||
|
||||
备份并编辑配置文件
|
||||
|
||||
```bash
|
||||
cp /etc/my.cnf /etc/my.cnf.bak
|
||||
vi /etc/my.cnf
|
||||
```
|
||||
|
||||
```bash
|
||||
[mysqld]
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
||||
socket=/var/lib/mysql/mysql.sock
|
||||
datadir=/var/lib/mysql
|
||||
log-error=/var/log/mysqld.log
|
||||
secure-file-priv=NULL
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
# 服务端默认utf8编码
|
||||
character-set-server=utf8mb4
|
||||
# 默认存储引擎
|
||||
default-storage-engine=INNODB
|
||||
|
||||
|
||||
# 主从配置
|
||||
log-bin=binlog
|
||||
server-id=121
|
||||
gtid-mode=on
|
||||
enforce-gtid-consistency=on
|
||||
log-slave-updates=on
|
||||
expire_logs_days=14
|
||||
|
||||
# Compatible with versions before 8.0
|
||||
default_authentication_plugin=mysql_native_password
|
||||
skip-host-cache
|
||||
skip-name-resolve
|
||||
|
||||
[client]
|
||||
#设置客户端编码
|
||||
default-character-set=utf8mb4
|
||||
[mysql]
|
||||
# 设置mysql客户端默认编码
|
||||
default-character-set=utf8mb4
|
||||
```
|
||||
|
||||
2. 重新启动
|
||||
|
||||
```bash
|
||||
systemctl start mysqld
|
||||
```
|
||||
|
||||
3. 登录数据库授权
|
||||
|
||||
```sql
|
||||
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
|
||||
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
|
||||
flush privileges;
|
||||
SHOW MASTER STATUS; #此信息记录等会配置另外一台节点需要用
|
||||
```
|
||||
|
||||
### Mysql 2号主配置
|
||||
|
||||
1. 停止数据库
|
||||
|
||||
```bash
|
||||
systemctl stop mysqld
|
||||
```
|
||||
|
||||
备份并编辑配置文件
|
||||
|
||||
```bash
|
||||
cp /etc/my.cnf /etc/my.cnf.bak
|
||||
vi /etc/my.cnf
|
||||
```
|
||||
|
||||
```bash
|
||||
[mysqld]
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
||||
socket=/var/lib/mysql/mysql.sock
|
||||
datadir=/var/lib/mysql
|
||||
log-error=/var/log/mysqld.log
|
||||
secure-file-priv=NULL
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
# 服务端默认utf8编码
|
||||
character-set-server=utf8mb4
|
||||
# 默认存储引擎
|
||||
default-storage-engine=INNODB
|
||||
|
||||
|
||||
# 主从配置
|
||||
log-bin=binlog
|
||||
server-id=122
|
||||
gtid-mode=on
|
||||
enforce-gtid-consistency=on
|
||||
log-slave-updates=on
|
||||
expire_logs_days=14
|
||||
|
||||
# Compatible with versions before 8.0
|
||||
default_authentication_plugin=mysql_native_password
|
||||
skip-host-cache
|
||||
skip-name-resolve
|
||||
|
||||
[client]
|
||||
#设置客户端编码
|
||||
default-character-set=utf8mb4
|
||||
[mysql]
|
||||
# 设置mysql客户端默认编码
|
||||
default-character-set=utf8mb4
|
||||
```
|
||||
|
||||
2. 重新启动
|
||||
|
||||
```bash
|
||||
systemctl start mysqld
|
||||
```
|
||||
|
||||
3. 登录数据库授权
|
||||
|
||||
```sql
|
||||
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
|
||||
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
|
||||
flush privileges;
|
||||
SHOW MASTER STATUS; #此信息记录等会配置另外一台节点需要用
|
||||
```
|
||||
|
||||
### Mysql 1号主节点配置
|
||||
|
||||
1. 开启同步
|
||||
|
||||
```sql
|
||||
CHANGE MASTER TO
|
||||
MASTER_HOST='', #IP地址
|
||||
MASTER_USER='slave',
|
||||
MASTER_PASSWORD='password', #密码
|
||||
MASTER_PORT=3306,
|
||||
MASTER_LOG_FILE='binlog.000002', #节点2 binlog 信息
|
||||
MASTER_LOG_POS=821; #节点2 log_pos信息
|
||||
```
|
||||
|
||||
2. 开启主从同步
|
||||
|
||||
```sql
|
||||
start slave;
|
||||
```
|
||||
|
||||
3. 查看同步状态
|
||||
|
||||
```sql
|
||||
show slave status\G;
|
||||
```
|
||||
|
||||
|
||||
### Mysql 2号主节点配置
|
||||
|
||||
1. 开启同步
|
||||
|
||||
```sql
|
||||
CHANGE MASTER TO
|
||||
MASTER_HOST='', #IP地址
|
||||
MASTER_USER='slave',
|
||||
MASTER_PASSWORD='password', #密码
|
||||
MASTER_PORT=3306,
|
||||
MASTER_LOG_FILE='binlog.000002', #节点1 binlog 信息
|
||||
MASTER_LOG_POS=821; #节点1 log_pos信息
|
||||
```
|
||||
|
||||
2. 开启主从同步
|
||||
|
||||
```sql
|
||||
start slave;
|
||||
```
|
||||
|
||||
3. 查看同步状态
|
||||
|
||||
```sql
|
||||
show slave status\G;
|
||||
```
|
||||
|
||||
|
||||
## Mysql 配置密码等级
|
||||
|
||||
```bash
|
||||
set global validate_password.policy=0;
|
||||
set global validate_password.mixed_case_count=0;
|
||||
set global validate_password.number_count=0;
|
||||
set global validate_password.special_char_count=0;
|
||||
set global validate_password.length=3;
|
||||
```
|
||||
|
||||
> 1.修改密码强度等级为0,即是LOW;
|
||||
> 2.修改密码至少要包含的大写字母和小写字母的个数为0;
|
||||
> 3.修改密码至少要包含的数字个数为0;
|
||||
> 4.修改密码至少要包含的特殊字符的个数为0;
|
||||
> 5.修改密码的长度最小个数为3;
|
23
资源安装/Nexus忘记密码.md
Normal file
23
资源安装/Nexus忘记密码.md
Normal file
@@ -0,0 +1,23 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Nexus忘记密码
|
||||
|
||||
1. 启动服务
|
||||
|
||||
```bash
|
||||
java -jar ./lib/support/nexus-orient-console.jar
|
||||
```
|
||||
|
||||
2. 进入数据库
|
||||
|
||||
```bash
|
||||
connect plocal:../sonatype-work/nexus3/db/security admin admin
|
||||
```
|
||||
|
||||
3. 重置密码
|
||||
|
||||
```bash
|
||||
update user SET password="$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==" UPSERT WHERE id="admin"
|
||||
```
|
||||
|
||||
|
86
资源安装/OpenSSL搭建CA证书颁发机构Genpkey.md
Normal file
86
资源安装/OpenSSL搭建CA证书颁发机构Genpkey.md
Normal file
@@ -0,0 +1,86 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# OpenSSL搭建CA证书颁发机构Genpkey
|
||||
|
||||
[官网文档](https://www.openssl.org/docs/man3.0/man1/openssl-genpkey.html)
|
||||
|
||||
## 基础环境准备
|
||||
|
||||
1. 安装 OpenSSL
|
||||
|
||||
- Centos
|
||||
|
||||
```bash
|
||||
yum install openssl -y
|
||||
```
|
||||
|
||||
- Ubuntu
|
||||
|
||||
```bash
|
||||
apt install openssl -y
|
||||
```
|
||||
|
||||
## 创建根证书颁发机构
|
||||
|
||||
1. 生成 CA 私钥
|
||||
|
||||
```bash
|
||||
openssl genpkey -algorithm RSA -out RootCA.key
|
||||
```
|
||||
|
||||
> -pkeyopt rsa_keygen_bits:4096 -aes256
|
||||
|
||||
2. 生成 CA 自签名证书
|
||||
|
||||
```bash
|
||||
openssl req -key RootCA.key -new -x509 -days 3650 -out RootCA.pem -subj "/C=CN/ST=Beijing/L=Beijing/O=Linux/OU=Linux/CN=*.com"
|
||||
```
|
||||
|
||||
`-subj`:后面跟着的是一个字符串,用于指定证书的主题(Subject)字段。这些字段包含了证书所有者的识别信息,通常用于证书显示和验证过程中。各个字段的意义如下:
|
||||
|
||||
- `/C=CN`:国家名称,使用两位国家代码,例如 `CN` 代表中国。
|
||||
- `/ST=YourState`:州或省份名称,根据你的地理位置填写。
|
||||
- `/L=YourCity`:城市名称,根据你的地理位置填写。
|
||||
- `/O=YourOrganization`:组织名称,表示证书所有者所属的公司或组织。
|
||||
- `/OU=YourOrganizationalUnit`:组织单位名称,是组织内部的一个部门或单位。
|
||||
- `/CN=YourCommonName`:常用名称,通常是域名或个人的名称。对于根 CA,这里可以是机构的名称或描述。
|
||||
- `/emailAddress=your.email@example.com`:电子邮件地址,用于联系证书的所有者。
|
||||
|
||||
## 创建并签署子证书(这里演示为泛域名证书)
|
||||
|
||||
1. 生成子证书密钥
|
||||
|
||||
```bash
|
||||
openssl genpkey -algorithm RSA -out wildcard.key
|
||||
```
|
||||
|
||||
2. 创建证书签名请求(CSR)
|
||||
|
||||
> 使用子证书的私钥创建一个 CSR。CSR 包含证书的相关信息。
|
||||
|
||||
```bash
|
||||
openssl req -new -key wildcard.key -out wildcard.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=Linux/OU=Linux/CN=*.com"
|
||||
```
|
||||
|
||||
3. 使用根证书签署子证书
|
||||
|
||||
```bash
|
||||
openssl x509 -req -days 3650 -in wildcard.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -out wildcard.crt -sha256
|
||||
```
|
||||
|
||||
## 分发证书
|
||||
|
||||
> 将子证书(server.pem)和根证书(RootCA.pem)分发给需要验证身份的用户或系统。
|
||||
|
||||
### 注意事项:
|
||||
|
||||
- **安全性**:确保私钥文件(如 RootCA.key 和 server.key)安全存储,避免泄露。
|
||||
- **有效期**:根证书通常具有较长的有效期(如 10 年),而子证书具有较短的有效期(如 1 年)。根据你的安全政策调整这些设置。
|
||||
- **撤销列表(CRL)和在线证书状态协议(OCSP)**:为了提高安全性,建立机制以撤销或检查证书的有效性。
|
||||
|
||||
> 这只是创建 CA 和管理证书的基本概念。实际操作中,可能需要考虑更多的安全措施和复杂的配置选项。
|
||||
|
||||
```bash
|
||||
openssl pkcs12 -export -out RootCA.pfx -inkey RootCA.key -in RootCA.pem
|
||||
```
|
||||
|
40
资源安装/Teleport部署.md
Normal file
40
资源安装/Teleport部署.md
Normal file
@@ -0,0 +1,40 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Teleport部署
|
||||
|
||||
[官方脚本](https://goteleport.com/download/)
|
||||
|
||||
[本地部署官方文档](https://goteleport.com/docs/get-started/)
|
||||
|
||||
## 部署
|
||||
|
||||
1. 安装
|
||||
|
||||
```bash
|
||||
curl https://goteleport.com/static/install.sh | bash -s 14.0.0
|
||||
```
|
||||
|
||||
2. 生成 https 配置文件
|
||||
|
||||
```bash
|
||||
sudo teleport configure -o file \
|
||||
--cluster-name=teleport.*.cn \
|
||||
--public-addr=teleport.*.cn:443 \
|
||||
--cert-file=/root/cert/nginx.pem \
|
||||
--key-file=/root/cert/nginx.key
|
||||
```
|
||||
|
||||
3. 启动
|
||||
|
||||
```bash
|
||||
systemctl enable teleport
|
||||
systemctl start teleport
|
||||
```
|
||||
|
||||
4. 注册用户
|
||||
|
||||
```bash
|
||||
sudo tctl users add admin --roles=editor,access --logins=root
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user