[实验] Redis 的安装

纪念:站主于 2019 年 9 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

软件准备:

在 Redis 的官网上下载软件 Redis:

https://redis.io

正文:

步骤一:系统环境要求

1) 服务器的系统需要是 CentOS Linux 7 版本
2) 服务器系统需要有软件源

步骤二:安装 Redis 数据库

2.1 安装 Redis 数据库的相关依赖包

# yum -y install gcc gcc-c++ make

2.2 安装 Redis 数据库

2.2.1 解压安装包
# tar -zxf redis-5.0.5.tar.gz

(补充:这里要安装的 Redis 版本是 5.0.5)

2.2.2 进入安装包目录
# cd redis-5.0.5/

(补充:这里要安装的 Redis 版本是 5.0.5)

2.2.3 编译安装包
# make
2.2.4 安装软件包
# make install
2.2.5 进入配置目录
# cd utils/
2.2.6 配置软件包
# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

[实验] Nginx 源码软件包的安装

纪念:站主于 2019 年 9 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

软件准备:

在 Nginx 官网上下载搭建集群所需软件 Nginx:

http://nginx.org/en/download.html

正文:

步骤一:系统环境要求

(1)服务器的系统需要是 CentOS Linux 7 版本
(2)服务器系统需要有 yum 源

步骤二:安装 Nginx 的依赖软件

# yum -y install gcc pcre-devel openssl-devel

步骤三:安装 Nginx

3.1 添加一个用于启动 Nginx 的用户身份

# useradd -s /sbin/nologin nginx

3.2 解压 Nginx 安装包

# tar -xvf nginx-1.16.1.tar.gz

(补充:这里要安装的 Nginx 版本是 1.16.1)

3.3 进入 Nginx 安装包目录

# cd nginx-1.16.1

(补充:这里要安装的 Nginx 版本是 1.16.1)

3.4 配置 Nginx

# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module

3.5 编译并安装 Nginx

# make && make install

步骤四:测试 Nginx

4.1 启动 Nginx

# /usr/local/nginx/sbin/nginx

4.2 访问 Nginx 实现的网页服务

# curl 127.0.0.1

4.3 显示已安装 Nginx 的版本

# /usr/local/nginx/sbin/nginx -V

[实验] FTP + Pacemaker 存储服务高可用的实现

纪念:站主于 2019 年 8 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

注意:

在实现 FTP + Pacemaker 存储服务高可用之前要先安装 Pacemaker 集群 ,并且需要 root 权限

正文:

步骤一:Pacemaker 高可用 FTP 服务的解析

1.1 集群本身需要的服务

需要额外一台服务器提供 Iscasi 远程目录服务

1.2 本 Pacemaker 高可用 FTP 服务的特点

1) 使用其他服务器提供的 Iscasi 服务器作为 FTP 的共享目录
2) 提供 FTP 服务
4) 提供虚拟 IP 服务
5) 以上三项服务器都实现高可用
6) 唯一的单点故障在于额外的那台服务器提供的 Iscasi 远程目录服务器

步骤二:前期准备所有集群主机上都安装 FTP 服务

2.1 在所有集群主机上安装 FTP

(在所有集群服务器上执行以下步骤)

# yum -y install vsftpd

2.2 确保 vsftpd 服务没有启动

(在所有集群服务器上执行以下步骤)

# systemctl stop vsftpd
# systemctl disable vsftpd

步骤三:部署 Pacemaker 的 FTP 高可用服务

3.1 在 ftp 资源组中创建名为 ftpip 的虚拟 ip 资源

(只在一台集群里的服务器上执行以下步骤)

# pcs resource create ftpip IPaddr2 ip=192.168.0.21 cidr_netmask=24 --group ftp

3.2 在 ftp 资源组中创建名为 ftpfiles 挂载其他服务器的 Iscasi 服务的资源

(只在 1 台集群里的服务器上执行以下步骤)

# pcs resource create ftpfiles Filesystem device=192.168.8.21:/content/ftp directory=/var/ftp fstype=nfs options=ro --group ftp

(注意:这里的 Filesystem 指的是其他服务器搭建的 Iscasi 服务,这个服务需要提前搭建好)

3.3 在 ftp 资源组中创建名为 vsftpd 的 ftp 资源

(只在一台集群里的服务器上执行以下步骤)

# pcs resource create vsftpd systemd:vsftpd --group ftp

[实验] Apache + Pacemaker 网站服务高可用的实现

纪念:站主于 2019 年 8 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

注意:

在实现 Apache + Pacemaker 网站服务高可用之前要先安装 Pacemaker 集群

正文:

步骤一:Pacemaker 高可用网站服务的解析

1.1 集群本身需要的服务

需要额外一台服务器提供 NFS 远程目录服务

1.2 本 Pacemaker 高可用网站服务的特点

1) 使用其他服务器提供的 NFS 服务器作为网站的网页目录
2) 提供网站 服务
3) 提供虚拟 IP 地址服务
4) 以上三项服务器都实现高可用
5) 唯一的单点故障在于额外的那台服务器提供的 NFS 远程目录服务器

步骤二:前期准备

2.1 在所有集群服务器上安装 httpd

(在所有集群服务器上执行以下步骤)

# yum -y install httpd

2.2 确保 httpd 不会被 SELinux 限制

(在所有集群服务器上执行以下步骤)

# setsebool -P httpd_use_nfs 1

(补充:这里是要求 SELinux 的布尔值让 httpd 也可以使用 NFS 服务)

2.3 确保 httpd 没有启动

(在所有集群服务器上执行以下步骤)

# systemctl stop httpd
# systemctl disable httpd

步骤三:部署 Pacemaker 的网站高可用服务

3.1 在 网站资源组中创建名为 webip 的虚拟 IP 地址资源

(只在一台集群里的服务器上执行以下步骤)

# pcs resource create webip IPaddr2 ip=192.168.0.20 cidr_netmask=24 --group=web

3.2 在 网站资源组中创建名为 webnfs 挂载其他服务器的 NFS 服务的资源

(只在一台集群里的服务器上执行以下步骤)

# pcs resource create webnfs Filesystem device=192.168.8.21:/content directory=/var/www/html fstype=nfs options=ro --group web

(注意:这里的 Filesystem 指的是其他服务器搭建的 NFS 服务,这个服务需要提前搭建好,可以参考 https://eternalcenter.com/nfs/ 里的内容)

3.3 在网站资源组中创建名为 webserver 的网站资源

(只在 1 台集群里的服务器上执行以下步骤)

# pcs resource create webserver apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group web

[实验] Pacemaker 集群的搭建

纪念:站主于 2019 年 8 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

步骤一:规划拓扑

1.1 服务器列表

pacemaker0 192.168.11.30
pacemaker1 192.168.11.31
pacemaker2 192.168.11.32

1.2 服务器列表简介

1) pacemaker0、pacemaker1、pacemaker2 都启用 pcs 服务,通过 pcs 实现 pacemaker
2) 3 台服务器都可通过 pcs 服务提供 web、nfs 等服务,但是 web、nfs 等服务在同一时间里只在一台服务器上生效
3) 如果正在提供 web、nfs 服务的服务器 down 掉了,则正在它上面运行的 web nfs 等服务将无缝自动迁移到另外两台服务器

步骤二:服务器系统要求

1) 所有服务器的系统都需要是 CentOS 7 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要关闭 SELinux
4) 所有服务器系统都要配置好可用的软件源
5) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机

步骤三:安装并启用 pcs

3.1 在所有服务器上安装 pcs 和 fence-agents-all 服务

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# yum install pcs fence-agents-all

3.2 在所有服务器防火墙上开放 pcs

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --reload

3.3 在所有服务器上启动 pcs ,并设置开机自起

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# systemctl enable pcsd
# systemctl start pcsd

步骤四:让服务器中的各主机通过 pcs 验证

4.1 在所有服务器将 hacluster 用户的密码修改为 redhat

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# echo redhat | passwd --stdin hacluster

4.2 在所有服务器上添加主机名到 IP 地址的解析

(分别在 pacemaker0 pacemaker1 pacemaker2 上执行以下步骤)

# echo "192.168.11.30 pacemaker0" >> /etc/hosts
# echo "192.168.11.31 pacemaker1" >> /etc/hosts
# echo "192.168.11.32 pacemaker2" >> /etc/hosts

4.3 让集群里的所有服务器通过 pcs 验证

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster auth pacemaker0 pacemaker1 pacemaker2
Username: hacluster
Password: 
pacemaker2: Authorized
pacemaker1: Authorized
pacemaker0: Authorized

(补充:这一步也可以使用 -u 和 -p 参数实现非交互式配置)

步骤五:通过 pcs 服务生成 1 个名为 mycluster 的 pcs 集群

5.1 生成一个名为 mycluster 包含 pacemaker0 pacemaker1 pacemaker2 的集群组

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster setup --start --name mycluster pacemaker0 pacemaker1 pacemaker2
Destroying cluster on nodes: pacemaker0, pacemaker1, pacemaker2...
pacemaker2: Stopping Cluster (pacemaker)...
pacemaker0: Stopping Cluster (pacemaker)...
pacemaker1: Stopping Cluster (pacemaker)...
pacemaker0: Successfully destroyed cluster
pacemaker1: Successfully destroyed cluster
pacemaker2: Successfully destroyed cluster

Sending 'pacemaker_remote authkey' to 'pacemaker0', 'pacemaker1', 'pacemaker2'
pacemaker1: successful distribution of the file 'pacemaker_remote authkey'
pacemaker0: successful distribution of the file 'pacemaker_remote authkey'
pacemaker2: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
pacemaker0: Succeeded
pacemaker1: Succeeded
pacemaker2: Succeeded

Starting cluster on nodes: pacemaker0, pacemaker1, pacemaker2...
pacemaker0: Starting Cluster (corosync)...
pacemaker1: Starting Cluster (corosync)...
pacemaker2: Starting Cluster (corosync)...
pacemaker1: Starting Cluster (pacemaker)...
pacemaker0: Starting Cluster (pacemaker)...
pacemaker2: Starting Cluster (pacemaker)...

Synchronizing pcsd certificates on nodes pacemaker0, pacemaker1, pacemaker2...
pacemaker2: Success
pacemaker1: Success
pacemaker0: Success
Restarting pcsd on the nodes in order to reload the certificates...
pacemaker2: Success
pacemaker1: Success
pacemaker0: Success


补充:这里可以通过以下方式强制重新生成集群

[root@pacemaker0 ~]# pcs cluster setup --start --name mycluster --force pacemaker0 pacemaker1 pacemaker2

5.2 让所有 pcs 集群都随 pcs 服务自动启动

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster enable --all

5.3 显示 pcs 集群状态

(只在 pacemaker0 上执行以下步骤)

[root@pacemaker0 ~]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: pacemaker0 (version 1.1.19-8.el7-c3c624ea3d) - partition with quorum
 Last updated: Sun Aug  4 09:21:55 2019
 Last change: Sun Aug  4 09:20:38 2019 by hacluster via crmd on pacemaker0
 3 nodes configured
 0 resources configured

PCSD Status:
  pacemaker1: Online
  pacemaker2: Online
  pacemaker0: Online

(注意:如果在 PCSD Status 中出现了 down ,则要确保他们的主机没有在 /etc/hosts 中 127.0.0.1 那一行中出现)