[工具] Shell 批量检测域名的 DNS 解析是否正确

介绍

基本信息

作者:朱明宇
名称:批量检测域名的 DNS 解析是否正确
作用:批量检测域名的 DNS 解析是否正确

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. main_domain=eternalcenter.com #此处填写网站的“主域名”,网站一般会有几个域名,其中“主域名”直接指向 ip 地址,其他的域名都指向主域名
2. ip=192.154.240.64 #域名指向的 ip 地址
3. nginx=1.16.0 #web 程序的对应版本的版本
4. content1=”eteranlcenter” # 随即填写一个具有代表性的网站首页的内容
5. content2=”Mingyu” # 随即填写一个具有代表性的网站首页的内容,但是要和前面的 content1 在同一行
6. domain=”eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org” #需要检测的域名

脚本

#!/bin/bash

####################### Separator ########################

main_domain=eternalcenter.com
ip=144.48.142.148
nginx=1.16.0
content1="eternalcenter"
content2="Mingyu"
domain="eternalcenter.com eternalcentre.com zhumingyu.com mingyuzhu.com eternalcenter.org eternalcentre.org"

####################### Separator ########################

check_domain_name(){
if [ $1 == $main_domain ];then
	
	ping -c4 -i0.4 $1 | grep $ip &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! ip is error !!!!! \033[0m"
	else
		curl $1 | grep $nginx &> /dev/null
		if [ $? -ne 0 ];then
			echo -e "\033[31m $1 is error !!!!! software is error !!!!! \033[0m"
		else	
			elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
			if [ $? -ne 0 ];then
				echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
			else
				echo -e "\033[32m $1 is ok \033[0m"
			fi
		fi
		
	fi
else
	elinks $1 | grep "$content1" | grep "$content2" &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[31m $1 is error !!!!! web is error !!!!! \033[0m"
	else
		echo -e "\033[32m $1 is ok \033[0m"
	fi


fi
}

for i in $domain
do
	check_domain_name $i
done

命运

远古神话的只言片语
既模糊又清晰地标注着道德的起源和界限
古老英雄史诗的优美音律
既神圣又悲伤地歌颂着自由的永恒不息

艺术家们
被囚禁在不同维度的时间牢笼之中
然而却都在守望着同样的唯美风景

思想家们
隔着浩瀚无边的星辰大海
然而却都伸手向着同样的真实

在人们内心深处的炫目之光
射穿着人们各自形只影单的身影
被这些璀璨光芒包裹着的灵魂
慢慢变得温柔且坚定

一场场惨烈露骨的战争爆发了又结束
一个个象征着美好新生活的革命开始了又消失
无数次这种让人们心碎神伤的辩论
用深入骨髓的痛楚缓慢地改变着人类的自我认知

命运的万色星辰开始若隐若现
开始支撑起无助迷茫的心灵
让活着的生灵们塑造着世界的万千形态

[实验] 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 命令 pcs resource (管理资源)

注意:

在使用 Pacemaker 命令之前要先安装 Pacemaker 集群 ,并且需要 root 权限

正文:

内容一:pcs resource 命令

1.1 pcs resource 命令的常用选项

1) interval=value

定义资源监控的时间,如果不设置的话,就使用的是 resource agent ,每 60 秒检测一次

2) timeout=value

设置操作的等待时间,如果时间结束了某项操作还没有完成,则自动失败

3) on-fail=action

如果操作失败,则会执行以下动作

4) ignore

忽略所有失败的操作

5) block

当 fence 没有被配置时,停止执行操作

6) stop

停止处于激活状态的集群

7) restart

重启资源

8) fence

当 fence 有被配置时,当某个资源停止时隔离运行此资源的主机

9) standby

将所有资源从他正在运行的主机上移到另 1 台服务器

1.2 pcs resource 命令选项的使用案例

# pcs resourece create webserver apache \
> configfile="/etc/httpd/conf/http.conf" \
> statusurl="http:?/127.0.0.1/server-status" --group myweb \
> op monitor interval=20s timeout=30s


补充:这里以创建
1) 名为 webserver
2) 配置文件是 /etc/httpd/conf/http.conf
3) 状态链接是 http:?/127.0.0.1/server-status
4) 组名是 myweb
5) 监控间隔是 20 秒
6) 延迟时间是 30 秒
的 apache 资源为例

内容二:pcs resource 资源显示相关的命令

2.1 显示所有可用的资源列表

# pcs resource list

2.2 显示具体的某个可用资源的介绍

# pcs resource describe <resource>

2.3 显示所有的 pcs 资源

# pcs resource show

2.4 显示某个 pcs 资源

# pcs resource show <resource>

2.5 显示所有 pcs 资源被限制的情况

# pcs constraint list

内容三:pcs resource 资源增、删、改相关的命令

3.1 修改 pcs 资源

# pcs resource update <resource> <option>

3.2 删除 pcs 资源

# pcs resource delete <resource> 

3.3 在某个组里面添加某个资源

# pcs resource group add <group> <resource>

3.4 在某个组里面删除某个资源

# pcs resource group remove <group> <resource>

内容四:pcs resource 资源管理相关的命令

4.1 停用某个 pcs 资源

# pcs resource disable <resource>

4.2 启用某个 pcs 资源

# pcs resource enable <resource>

4.3 移动 pcs 资源到另 1 个主机

# pcs resource move <resource> <host>

4.4 指定某个 pcs 资源只能在某个主机上运行

# pcs resource ban <resource> <host>

4.5 清除某个 pcs 资源只能在某个主机上运行的限制

# pcs resource clear <resource> <host>

内容五:pcs resource 资源监控相关的命令

5.1 删除某个资源的监控

# pcs resource op remove <resource> monitor

5.2 添加某个资源的监控

# pcs resource op add <resource> monitor <fence parameter> onfail=fence

内容六:pcs resource 资源排错相关的命令

6.1 显示某个 pcs 资源失败的次数

# pcs resource failcount show <resource>

6.2 检查某个资源的情况

# pcs resource debug-start firstwebserver --full