问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一名优秀的Linux运维人员该掌握哪些工具

发布网友 发布时间:2022-04-21 05:38

我来回答

3个回答

懂视网 时间:2022-04-28 08:38

前言

如有错误,随时斧正,非常感谢!

为什么要使用haProxy+keepalived呢?

为了AMQP服务的稳定性

首先先说下为什么要使用haProxy。

我在两台服务器上建了AMQP集群,分别是10.71.13.24和10.71.13.25,以后简称为24、25服务器。假设AMQP客户端直接连接24或25。如果24|25服务器宕机了,那么连接24|25的AMQP客户端就无法工作,消费者也无法进行正常消费(以下以24举例代表24|25单机的情况)。再者单机连接可能造成单机负载过高,而其他服务器空闲的状态。此时则可以通过haProxy实现负载均衡。

在本地的配置如:

global
 #log 127.0.0.1 local0 #[日志输出配置,所有日志都记录在本机,通过local0输出]
 log 127.0.0.1 local1 notice #定义haproxy 日志级别[error warringinfo debug]   
 daemon #以后台形式运行harpoxy
 nbproc 2 #设置进程数量
 maxconn 4096 #默认最大连接数,需考虑ulimit-n限制
 #user haproxy #运行haproxy的用户
 pidfile /var/run/haproxy.pid #haproxy 进程PID文件
 #group www #运行haproxy的用户所在的组
 #ulimit-n 65535 #ulimit 的数量限制
 #chroot /usr/share/haproxy #chroot运行路径
 #debug #haproxy 调试级别,建议只在开启单进程的时候调试
 #quiet

########默认配置############
defaults
 log global
 log 127.0.0.1 local0 info
 mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
 option httplog #日志类别,采用httplog
 option dontlognull #不记录健康检查日志信息
 retries 3 #两次连接失败就认为是服务器不可用,也可以通过后面设置
 option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
 option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持
 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
 maxconn 4096 #默认的最大连接数
 #timeout http-keep-alive10s #默认持久连接超时时间
 #timeout http-request 10s #默认http请求超时时间
 #timeout queue 1m #默认队列超时时间
 balance roundrobin #设置默认负载均衡方式,轮询方式
 #balance source #设置默认负载均衡方式,类似于nginx的ip_hash
 #balnace leastconn #设置默认负载均衡方式,最小连接数
 timeout connect 5s #连接超时
 timeout client 120s # 客户端超时
 timeout server 120s #服务端超时
 timeout check 2000 #心跳检测超时ms
#绑定配置
listen rabbitmq_cluster
 bind 0.0.0.0:5678
 mode http #配置TCP模式
 balance roundrobin
 #RabbitMQ集群节点配置
 server rmq_node_13_24 10.71.13.24:5672 check inter 5000 rise 2 fall 3 weight 1
 server rmq_node_13_25 10.71.13.25:5672 check inter 5000 rise 2 fall 3 weight 1
 # server <name> <ip>:<port> check inter <value> rise <value> fall <value> weight <value>
 # check inter <value>:每隔5000ms检测AMQP服务是否可用
 # rise <value>:检测到2次可用则可被确认再次可用。
 # fall <value>:检测到3次无法连接则认为服务不可用
 # weight <value>:权重

配置完haProxy.cfg之后,启动haProxy:sudo /etc/init.d/haproxy start。(haproxy启动脚本见最后)
配置解析:之前连接的socket是10.71.13.24:5672,现在连接的socket是10.71.13.24:5678。在25也可以按24的配置COPY一份,因此无论连接的是哪个服务器的5678端口最终都能实现负载均衡。然后还是有一个问题没有解决,如果某个服务器宕机了怎么办?这就是为什么要引入keepalived了。

再谈keepalived的使用

关于keepalived的原理我不熟,也就不过多的去解读。目前我只是想要解决我碰到的问题。为了解决AMQP最终能够稳定服务,于是申请了一个虚拟IP-VIP:10.71.13.254。通过这个VIP则可以开始配置keepalived.conf了。

! Configuration File for keepalived

global_defs {
 router_id Node_Master # 路由ID,主备的不能相同}vrrp_script chk_haproxy {
 script "/etc/keepalived/check_haproxy.sh"
 interval 5
 weight 2}vrrp_instance VI_1 {
 state MASTER #keepalived的角色。Master表示主服务器,从服务器设置为BACKUP
 interface eth1 #指定检测网卡,配置成eth0之后我无法连接到AMQP服务
 virtual_router_id 1
 priority 100 #优先级,BACKUP机器上的优先级至少小于50
 advert_int 1 #设置主备之间的检测时间,单位为s
 authentication {
 auth_type PASS
 auth_pass root123 }

 track_script {
 chk_haproxy }

 virtual_ipaddress { #VIP地址,可以设置多个 10.71.13.254
 }}virtual_server 10.71.13.254 5672 { # 设置虚拟服务器
 delay_loop 6 #设置运行情况检查时间,单位s
 lb_algo wrr #设置负载调度算法,共有rr、wrr、lc、wlc、lblc、lblcr、dh、sh 这8种
 lb_kind DR #设置LVS实现的负载均衡机制方式 VS/DR
 persistence_timeout 50 #指定在一定时间内来自同一IP的连接将会被转发到同一RealServer中
 protocol TCP

 # 这个real_server 即LVS的三大部分之一的RealServer,这里特指RabbitMQ服务
 real_server 10.71.13.24 5678 { #配置服务节点
 weight 1 #配置权重 TCP_CHECK {
  nb_get retry 3
  connect_timeout 3
  delay_before_retry 3
  connect_port 5672
 }
 }

 real_server 10.71.13.25 5678 {
 weight 1
 TCP_CHECK {
  nb_get retry 3
  connect_timeout 3
  delay_before_retry 3
  connect_port 5672
 }
 }
 }virtual_server 10.71.13.254 15672 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 persistence_timeout 50
 protocol TCP
 real_server 10.71.13.24 15672 {
 weight 1
 TCP_CHECK {
  nb_get retry 3
  connect_timeout 3
  delay_before_retry 3
  connect_port 15672
 }
 }
 real_server 10.71.13.25 15672 {
 weight 1
 TCP_CHECK {
  nb_get retry 3
  connect_timeout 3
  delay_before_retry 3
  connect_port 15672
 }
 }}

check_haproxy.sh脚本的目的是为了防止haProxy服务已经不可用而keepalived可用的情况,该脚本会尝试重新启动haProxy,如果启动不成功则关闭keepalived。这样keepalived的VIP就会漂移到BACKUP备份机,从而继续保证服务。脚本的配置如下:

#! /bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
 sudo service haproxy restartfisleep 2if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
 sudo service keepalived stopfi

在25服务器上的配置和24的服务器基本一致,注意修改属性:route_id、state、priority。
然后启动keepalived:sudo /etc/init.d/keepalived start。(启动脚本见最后)

启动完keepalived之后,我们再次连接AMQP服务就变成了:10.71.13.254:5762,因为master是24服务器,所以实际真实响应的服务是10.71.13.24:567810.71.13.25:5678。因为采用的是加权轮询且权重都是1,24和25会轮流响应VIP的请求。在haProxy中监听了5678端口,并且采用了轮询机制分发到24和25的5672端口。会发现keepalived的和haProxy都使用了轮询机制,能不能把其中的某一处去掉呢?增加了VIP之后如果master宕机之后,就会选举一个从机成为主机,接管原主机的服务。当人工修复好了原主机之后,从机会把服务重新还给主机去接管,自己还原成原来的状态。

haProxy和keepalived的启动脚本

haProxy的启动脚本

#! /bin/shset -ePATH=/sbin:/bin:/usr/sbin:/usr/binPROGDIR=/opt/haproxy-1.7.11PROGNAME=haproxyDAEMON=$PROGDIR/$PROGNAMECONFIG=$PROGDIR/conf/$PROGNAME.cfg
# PIDFILE=$PROGDIR/conf/$PROGNAME.pidPIDFILE=/var/run/haproxy.pidDESC="HAProxy daemon"SCRIPTNAME=/etc/init.d/$PROGNAME# Gracefully exit if the package has been removed.test -x $DAEMON || exit 0start(){
 echo -e "Starting $DESC: $PROGNAME
"
 $DAEMON -f $CONFIG
 echo "."}stop(){
 echo -e "Stopping $DESC: $PROGNAME
"
 haproxy_pid="$(cat $PIDFILE)"
 kill $haproxy_pid
 echo "."}restart(){
 echo -e "Restarting $DESC: $PROGNAME
"
 $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
 echo "."}case "$1" in
 start)
 start ;;
 stop)
 stop ;;
 restart)
 restart ;;
 *)
 echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
 exit 1
 ;;esac

exit 0

keepalived启动脚本:

#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79# description: Start and stop Keepalived

# Source function library. /etc/rc.d/init.d/functions

# Source configuration file (we set KEEPALIVED_OPTIONS there). /etc/sysconfig/keepalivedRETVAL=0prog="keepalived"start() {
 echo -n $"Starting $prog: "
 daemon keepalived ${KEEPALIVED_OPTIONS}
 RETVAL=$?
 echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog}stop() {
 echo -n $"Stopping $prog: "
 killproc keepalived RETVAL=$?
 echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog}reload() {
 echo -n $"Reloading $prog: "
 killproc keepalived -1
 RETVAL=$?
 echo}# See how we were called.case "$1" in
 start)
 start ;;
 stop)
 stop ;;
 reload)
 reload ;;
 restart)
 stop
 start ;;
 condrestart)
 if [ -f /var/lock/subsys/$prog ]; then
  stop
  start
 fi ;;
 status)
 status keepalived RETVAL=$?
 ;;
 *)
 echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
 RETVAL=1esac

exit $RETVAL

相关学习推荐:php编程(视频)

热心网友 时间:2022-04-28 05:46

运维人员必须熟悉的运维工具汇总
某日受邀请参加了一个BBS活动,于是有了下面的内容。
下面是在linux网站运维方向老男孩最近几年常用的免费的开源软件,临时即兴想起来的,在这里和大家分享,希望给初学者指引一点路。
linux的世界真的很精彩,还没入门的朋友赶紧进来吧!
操作系统:Centos※,Ubuntu,Redhat※,suse,Freebsd
网站服务:nginx※,apache※,lighttpd,php※,tomcat※,resin※
数据 库:MySQL※,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
网站缓存:squid※,nginx※,varnish
NOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB
存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS
版本管理:svn※,git※
监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg,graphite
域名解析:bind※,powerdns,dnsmasq※
同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※
批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,ansible,cfengine
虚拟 化:kvm※,xen※
云计 算:openstack※,docker,cloudstack
内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop
邮件软件:qmail,posfix※,sendmail
远程拨号:open*※,pptp,openswan※,ipip※
统一认证:openldap(可结合微软活动目录)※
队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq
打包发布:mvn※,ants※,jenkins※,svn
测试软件:ab,smokeping,siege,JMeter,Webbench,LoadRunner,http_load(都是※)
日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka,storm,ELK(Elasticsearch+Logstash+Kibana)DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)
搜索软件:Sphinx,Xapian(大公司会自己开发类似百度的小规模内部搜索引擎)

提示:
1)以上所有软件都是老男孩用过或测试过的。
2)带※的为老男孩最近几年用的比较多,可信任使用的。也是近年来linux运维的大众。
3)有了功能分类和软件名,大家有需求,可以按功能找软件直接G就知道了。
4)学习要有舍有得,什么都抓必然短时间都不会精,希望大家能抓重点,抓精髓,大众软件(带※)先熟练了,这是基础加提高,在研究小众软件(不带※),这是高手之路,最后在研究偏门的,世外高手之路,当然前提是先掌握前面的大众和小众。
5)当然还有一些没有大众开源的有一些也很棒,如审计堡垒机程序。

热心网友 时间:2022-04-28 07:04

1、Nethogs:查询进程占用带宽情况
Nethogs是一个终端下的网络流量监控工具,它的特别之处在于可以显示每个进程的带宽占用情况,这样可以更直观获取网络使用情况,它支持IPv4和IPV6协议、支持本地网卡及ppp链接。
2、IOZone:硬盘读取性能测试
IOZone是一款Linux文件系统性能测试工具,可以测试不同的操作系统文件系统的读写性能。
3、IOTop:实时监控磁盘IO
IOTop命令是一个用来监控磁盘IO使用状况的TOP类工具。IOTop具有与top类似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,而使用iotop命令可以很方便的查看。
4、IPtraf:网络流量监控
IPtraf是一个网络监控工具,功能比nload更强大,可以监控所有的流量,ip流量,按协议分的流量,还可以设置过滤器等。
5、IFTop:网络流量监控
IFTop是类似于Linux下面top的实时流量监控工具。iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
6、HTop:进程实时监控
HTop是一个Linux下的交互式的进程浏览器,可以用来替换Linux下的TOP命令。
7、NMON:系统资源监控
Nigel's Monitor简称nmon,是由Nigel
Griffiths开发的监控Linux系统性能的常用工具。通过nmon可以获取的信息有:处理器利用率、内存利用率、运行队列信息、磁盘I/O统计和网络I/O统计、进程指标等。
8、MultiTail:监控多个日志
MultiTail是个用来实现同时监控多个文档、类似tail命令功能的软件。他和tail的区别就是他会在控制台中打开多个窗口,这样使同时监控多个日志文档成为可能。
9、Tmux:连接会话终端持续化
Tmux是一个优秀的终端复用软件类似GNU Screen,比Screen更加方面、灵活和高效。为了确保连接SSH时掉线不影响任务运行。
10、NMap:安全扫描工具
Nmap,也就是Network
Mapper,最早是Linux下的网络扫描和嗅探工具包。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 linux运维工作中常用到的基本知识与命令有哪些 linux运维工程师必备工具有哪些 新浪微博为什么换不了主题皮肤? 新浪微博自己主页的皮肤怎么换? 微博桌面怎么换皮肤 如何设置新浪微博首页里的背景音乐和皮肤?谢谢 新浪微博的主页皮肤怎么设置啊? 新浪微博怎样弄透明皮肤? 新浪微博可以设置皮肤吗 新浪微博怎么换皮肤。是现在的。 新浪微博皮肤怎么换 如何更换新浪微博皮肤? 新版微博如何更改皮肤 新版新浪微博皮肤怎么换 BRIDGE和WDS的桥接问题 无线路由器中的WDS是什么意思 如何设置WDS桥接 WDS是桥接还是中继 wds桥接的条件是否两个路由器都要有桥接功能 wds无线桥接怎么用 做linux运维的都用什么系统 linux系统运维的高效方式? 成为Linux高端运维人才需要学会哪些知识 舞台灯光的CAD平面设计图 舞台灯光效果图是用什么软件设计的? 舞台三维效果图需要掌握哪些制图软件? 舞台场景建模软件有哪些 舞台灯光如何设计? 舞台灯光的设计过程 舞台如何搭建,才能有亮点? 用3d作舞台灯光怎么打 3dmax 舞台灯光 舞台灯光的舞台布局 求《舞台灯光》一书的电子版 作者金长烈 舞台灯光组成部分是哪些? 在3D效果图中舞台灯光的光束要怎样才可以打才可以看见 舞台灯光的设计常识 求助求助!!!我这里有几张舞台灯光的图,单位要我按照这个写灯光要求,但是我不懂啊!!求助!!! 3Dmax这种舞台灯光怎么打? 威海海参多钱一斤?