温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux中shell如何实现HTTP服务

发布时间:2021-03-12 14:02:58 来源:亿速云 阅读:1421 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关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,内容为

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 两个命令测试一下

nc localhost 9200

Linux中shell如何实现HTTP服务

telnet localhost 9200

Linux中shell如何实现HTTP服务

可以正确输出脚本执行内容,完成示例。

感谢各位的阅读!关于“Linux中shell如何实现HTTP服务”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI