源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Linux shell实现HTTP服务示例代码

  • 时间:2021-07-14 09:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux shell实现HTTP服务示例代码
[b]一、前言[/b] 使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求 HAProxy 如何知道 Mysql 是否有问题呢? [b]二、解决思路[/b] (1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息 (2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,返回检查结果 (3)HAProxy 访问这个HTTP服务,根据返回的结果信息来判断这个 mysql 是否可用 如何方便快速的实现一个可以调用shell脚本的HTTP服务呢? [b]比较通用的方案就是 xinetd[/b] xinetd 是 Linux 的守护进程,全称为 extended interent daemon,扩展的网络守护进程 xinetd 可以打开一个端口,等待连接,你可以告诉 xinetd 运行哪个脚本,当有连接进来后,xinetd 便会执行脚本,然后直接返回脚本输出的内容 [code]HAProxy -> xinetd -> mysql-check[/code]脚本,HAProxy 便取得了mysql的状态信息 [b]xinetd 的配置案例[/b] 下面实现一个简单的 xinetd 示例,开放 9200 端口,返回一个测试脚本的输出内容 如果机器上还没有 xinetd,先安装一下,centos7 下可以使用命令 [code]yum install xinetd[/code] [b](1)测试脚本[/b]
#!/bin/bash

echo `uptime | egrep -o 'up ([0-9]+) days' | awk '{print $2}'`
这个脚本用来输出当前服务器的在线天数 用 [code]chmod +x [/code]给脚本添加可执行权限 [b](2)编写 xinetd 服务[/b] 例如服务名为 [code]helloworld[/code],文件名 [code]/etc/xinetd.d/helloworld[/code],内容为
service helloworld

{

disable = no

port  = 9200

socket_type   = stream

protocol    = tcp

wait      = no

user      = root

server     = /root/test.sh

server_args   = test

}
[code]port [/code]指定监听的端口 [code]server [/code]指定要执行的脚本 [b](3)加入服务列表[/b] 修改 [code]/etc/services[/code] 找到定义 9200 端口的位置,注释掉原有的,添加 [code]helloworld [/code]服务
helloworld   9200/tcp

#wap-wsp     9200/tcp

#wap-wsp     9200/udp
[b](4)重启 xinetd[/b] centos 下的重启命令为:
systemctl restart xinetd.service
[b](5)测试[/b] 分别用 [code]nc [/code]和 [code]telnet [/code]两个命令测试一下
nc localhost 9200
[img]http://files.jb51.net/file_images/article/201608/201682594444601.jpg?20167259450[/img]
telnet localhost 9200
[img]http://files.jb51.net/file_images/article/201608/201682594530653.png?201672594540[/img] 可以正确输出脚本执行内容,完成示例 [b]总结[/b] Linux shell实现HTTP服务的内容到这就基本结束了,希望对大家的工作和学习能有所帮助,如果有疑问可以留言讨论。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部