Linux shell实现HTTP服务示例代码
2016-08-25 00:00
627 查看
一、前言
使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求
HAProxy 如何知道 Mysql 是否有问题呢?
二、解决思路
(1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息
(2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,返回检查结果
(3)HAProxy 访问这个HTTP服务,根据返回的结果信息来判断这个 mysql 是否可用
如何方便快速的实现一个可以调用shell脚本的HTTP服务呢?
比较通用的方案就是 xinetd
xinetd 是 Linux 的守护进程,全称为 extended interent daemon,扩展的网络守护进程
xinetd 可以打开一个端口,等待连接,你可以告诉 xinetd 运行哪个脚本,当有连接进来后,xinetd 便会执行脚本,然后直接返回脚本输出的内容
xinetd 的配置案例
下面实现一个简单的 xinetd 示例,开放 9200 端口,返回一个测试脚本的输出内容
如果机器上还没有 xinetd,先安装一下,centos7 下可以使用命令
(1)测试脚本
这个脚本用来输出当前服务器的在线天数
用
(2)编写 xinetd 服务
例如服务名为
(3)加入服务列表
修改
找到定义 9200 端口的位置,注释掉原有的,添加
(4)重启 xinetd
centos 下的重启命令为:
(5)测试
分别用
可以正确输出脚本执行内容,完成示例
总结
Linux shell实现HTTP服务的内容到这就基本结束了,希望对大家的工作和学习能有所帮助,如果有疑问可以留言讨论。
linux shell中 if else以及大于、小于、等于逻辑表达式介绍
Linux中执行shell脚本的4种方法总结
Linux shell脚本编程if语句的使用方法(条件判断)
linux shell自定义函数(定义、返回值、变量作用域)介绍
linux shell数组深入学习理解
linux shell命令行选项与参数用法详解
linux shell脚本学习xargs命令使用详解
Linux Shell中判断进程是否存在的代码
使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求
HAProxy 如何知道 Mysql 是否有问题呢?
二、解决思路
(1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息
(2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,返回检查结果
(3)HAProxy 访问这个HTTP服务,根据返回的结果信息来判断这个 mysql 是否可用
如何方便快速的实现一个可以调用shell脚本的HTTP服务呢?
比较通用的方案就是 xinetd
xinetd 是 Linux 的守护进程,全称为 extended interent daemon,扩展的网络守护进程
xinetd 可以打开一个端口,等待连接,你可以告诉 xinetd 运行哪个脚本,当有连接进来后,xinetd 便会执行脚本,然后直接返回脚本输出的内容
HAProxy -> xinetd -> mysql-check脚本,HAProxy 便取得了mysql的状态信息
xinetd 的配置案例
下面实现一个简单的 xinetd 示例,开放 9200 端口,返回一个测试脚本的输出内容
如果机器上还没有 xinetd,先安装一下,centos7 下可以使用命令
yum install xinetd
(1)测试脚本
#!/bin/bash echo `uptime | egrep -o 'up ([0-9]+) days' | awk '{print $2}'`
这个脚本用来输出当前服务器的在线天数
用
chmod +x给脚本添加可执行权限
(2)编写 xinetd 服务
例如服务名为
helloworld,文件名
/etc/xinetd.d/helloworld,内容为
service helloworld { disable = no port = 9200 socket_type = stream protocol = tcp wait = no user = root server = /root/test.sh server_args = test }
port指定监听的端口
server指定要执行的脚本
(3)加入服务列表
修改
/etc/services
找到定义 9200 端口的位置,注释掉原有的,添加
helloworld服务
helloworld 9200/tcp
#wap-wsp 9200/tcp
#wap-wsp 9200/udp
(4)重启 xinetd
centos 下的重启命令为:
systemctl restart xinetd.service
(5)测试
分别用
nc和
telnet两个命令测试一下
nclocalhost 9200
telnetlocalhost 9200
可以正确输出脚本执行内容,完成示例
总结
Linux shell实现HTTP服务的内容到这就基本结束了,希望对大家的工作和学习能有所帮助,如果有疑问可以留言讨论。
您可能感兴趣的文章:
使用HTTP api简单的远程执行PowerShell脚本linux shell中 if else以及大于、小于、等于逻辑表达式介绍
Linux中执行shell脚本的4种方法总结
Linux shell脚本编程if语句的使用方法(条件判断)
linux shell自定义函数(定义、返回值、变量作用域)介绍
linux shell数组深入学习理解
linux shell命令行选项与参数用法详解
linux shell脚本学习xargs命令使用详解
Linux Shell中判断进程是否存在的代码
相关文章推荐
- Linux shell实现HTTP服务示例代码
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- C#实现使用HTTP管道的.NET远程代码示例
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)