Linux中shell如何实现HTTP服务
这篇文章给大家分享的是有关Linux中shell如何实现HTTP服务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、前言
使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求。
二、解决思路
(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
,内容为
servicehelloworld { 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
服务
helloworld9200/tcp #wap-wsp9200/tcp #wap-wsp9200/udp
(4)重启 xinetd
centos 下的重启命令为:
systemctlrestartxinetd.service
(5)测试
分别用 nc
和 telnet
两个命令测试一下
nclocalhost9200
telnetlocalhost9200
可以正确输出脚本执行内容,完成示例。
感谢各位的阅读!关于“Linux中shell如何实现HTTP服务”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
推荐阅读
-
linux怎么搭建ftp服务器(linux ftp命令)
linuxftp命令?很欢喜问本问题,此观点祝你好运吧!再连接ftp服务器。格式:ftp[hostname|ip-address...
-
linux怎么调出屏幕键盘(linux | 怎么打出来,管道符号怎么打)
linux|怎么打出来,管道符号怎么打?楼主,你好!“|”这个符号在linux环境称做“管道符”框输入方法:Shift键盘的“...
-
linux系统生成core文件(linux udp缓存配置)
linuxudp缓存配置?临时再添加:sysctl-w_max26214400无限制再添加:将以下行添加到中:_max26214...
-
linux Centos如何安装PHP7
linuxCentos如何安装PHP7今天小编给大家分享一下li...
-
干了10多年的php,还不会安装,是不是丢人
-
Linux编程的十大代码编辑器新鲜出炉,你用的入榜单了吗?
-
从7到8,CentOS又更新了什么
-
PHP程序员的技术成长规划-基础阶段篇
-
Linux curl命令
Linuxcurl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但...
-
CentOS和RedHat下8个最常用的YUM库