Unix套接字命令(Unix Socket commands)
socat是一个多功能的网络工具,名字来由是“Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。
socat是一个两个独立数据通道之间的双向数据传输的继电器。
这些数据通道包含文件、管道、设备(终端或调制解调器等)、插座(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。
socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline和PTY。
它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,
作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等。
使用socat可以查看和设置HAProxy状态,首先得让HAProxy产生出一个sock出来(hatop ,socat都是基于这个的,没这个什么都做不了)。
设置配置文件开启unix socket
在global 下面 加一行:
stats socket /usr/local/haproxy/stats #路径和名字随意
然后重启服务就可以了。

配置文件加入socket这行
权限600,级别admin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@linux-node1 ~]# cat /etc/haproxy/haproxy.cfg
global
    chroot  /var/lib/haproxy
    daemon
    group  haproxy
    user  haproxy
    log  127.0.0.1:514  local3  info
    stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
    stats timeout 2m
defaults
    log global
    mode    http
   option   httplog
   option  dontlognull
   timeout  client  50000
   timeout  server  50000
   timeout  connect 5000
 
frontend http_front
   mode  http
   bind    *:80
   stats    uri /haproxy?stats
   default_backend http_back
backend http_back
   option forwardfor header X-REAL-IP
   #option httpchk  GET /index.html
   balance  roundrobin
   server   linux-node1 10.0.1.105:8080 #   check inter 2000 rise 3 fall 3 weight 1
   server   linux-node2 10.0.1.106:8080 #   check inter 2000 rise 3 fall 3 weight 1
[root@linux-node1 ~]#

  

重启服务

1
2
3
4
5
6
7
8
[root@linux-node1 ~]# /etc/init.d/haproxy restart
Restarting haproxy (via systemctl):                        [  确定  ]
[root@linux-node1 ~]#
[root@linux-node1 ~]#
[root@linux-node1 ~]# lsof -i:80
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
haproxy 28420 haproxy    5u  IPv4 216721      0t0  TCP *:http (LISTEN)
[root@linux-node1 ~]#

  

查看有没有生成socket

1
2
3
[root@linux-node1 ~]# ls /var/lib/haproxy/
haproxy.sock
[root@linux-node1 ~]#
 
通过socat和socket通信,它是cocket cat的缩写,安装
1
2
3
[root@linux-node1 ~]# yum list | grep socat
socat.x86_64                            1.7.2.2-5.el7                  base    
[root@linux-node1 ~]# yum install -y socat

  

利用管道查看帮助命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@linux-node1 ~]# echo "help" | socat stdio /var/lib/haproxy/haproxy.sock
Unknown command. Please enter one of the following commands only :
  clear counters : clear max statistics counters (add 'all' for all counters)
  clear table    : remove an entry from a table
  help           : this message
  prompt         : toggle interactive mode with prompt
  quit           : disconnect
  show backend   : list backends in the current running config
  show info      : report information about the running process
  show pools     : report information about the memory pools usage
  show stat      : report counters for each proxy and server
  show errors    : report last request and response errors for each proxy
  show sess [id] : report the list of current sessions or dump this session
  show table [id]: report table usage stats or dump this table's contents
  show servers state [id]: dump volatile server information (for backend <id>)
  get weight     : report a server's current weight
  set weight     : change a server's weight
  set server     : change a server's state, weight or address
  set table [id] : update or create a table entry's data
  set timeout    : change a timeout setting
  set maxconn    : change a maxconn setting
  set rate-limit : change a rate limiting value
  disable        : put a server or frontend in maintenance mode
  enable         : re-enable a server or frontend which is in maintenance mode
  shutdown       : kill a session or a frontend (eg:to release listening ports)
  show acl [id]  : report avalaible acls or dump an acl's contents
  get acl        : reports the patterns matching a sample for an ACL
  add acl        : add acl entry
  del acl        : delete acl entry
  clear acl <id> : clear the content of this acl
  show map [id]  : report avalaible maps or dump a map's contents
  get map        : reports the keys and values matching a sample for a map
  set map        : modify map entry
  add map        : add map entry
  del map        : delete map entry
  clear map <id> : clear the content of this map
  set ssl <stmt> : set statement for ssl
 
[root@linux-node1 ~]#

上面把支持的命令都显示出来了
下面就把页面监控上的东西都列出来了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@linux-node1 ~]# echo "show info" | socat stdio /var/lib/haproxy/haproxy.sock
Name: HAProxy
Version: 1.6.3
Release_date: 2015/12/25
Nbproc: 1
Process_num: 1
Pid: 28420
Uptime: 0d 0h09m43s
Uptime_sec: 583
Memmax_MB: 0
Ulimit-n: 4031
Maxsock: 4031
Maxconn: 2000
Hard_maxconn: 2000
CurrConns: 0
CumConns: 2
CumReq: 2
Maxpipes: 0
PipesUsed: 0
PipesFree: 0
ConnRate: 0
ConnRateLimit: 0
MaxConnRate: 0
SessRate: 0
SessRateLimit: 0
MaxSessRate: 0
CompressBpsIn: 0
CompressBpsOut: 0
CompressBpsRateLim: 0
Tasks: 5
Run_queue: 1
Idle_pct: 100
node: linux-node1.example.com
description:
 
[root@linux-node1 ~]#

通过disable或者enable可以关闭或者启动某台主机
准备把linux-node2关闭了

这里的主机名和页面显示的以及配置文件配置的一致

1
2
[root@linux-node1 ~]# echo "disable server linux-node2" | socat stdio /var/lib/haproxy/haproxy.sock
Require 'backend/server'.

  

格式如下。 backend/server
1
2
3
[root@linux-node1 ~]# echo "disable server http_back/linux-node2" | socat stdio /var/lib/haproxy/haproxy.sock
 
[root@linux-node1 ~]#

  

再次刷新页面就变成维护状态了

启动之后,恢复正常
1
[root@linux-node1 ~]# echo "enable server http_back/linux-node2" | socat stdio /var/lib/haproxy/haproxy.sock

目前还无法通过命令新增节点

  

haproxy调优的地方

1
2
3
1、不设置进程,默认就是1,单进程
2、网卡可能跑慢,换成万兆网卡,或者拆业务,拆成不同集群
3、haproxy的端口可能被用光,因为linux提供端口最多65535。
(1)改local的端口范围。
1
2
3
[root@linux-node1 ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768   60999
[root@linux-node1 ~]#
(2)改tcp的tw端口的复用,启用reuse,禁用recycle,改成1 
1
2
3
[root@linux-node1 ~]# cat /proc/sys/net/ipv4/tcp_tw_reuse
0
[root@linux-node1 ~]#
(3)可以缩短tw的时间,默认是60秒。
1
2
3
[root@linux-node1 ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
[root@linux-node1 ~]#
(4)使用多个IP

 

 

学习Haproxy (八)的更多相关文章

  1. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  2. Java IO流学习总结八:Commons IO 2.5-IOUtils

    Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...

  3. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  4. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  5. 从零学习Fluter(八):Flutter的四种运行模式--Debug、Release、Profile和test以及命名规范

    从零学习Fluter(八):Flutter的四种运行模式--Debug.Release.Profile和test以及命名规范 好几天没有跟新我的这个系列文章,一是因为这两天我又在之前的基础上,重新认识 ...

  6. 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning

    原文地址: https://www.cnblogs.com/pinard/p/9714655.html ------------------------------------------------ ...

  7. (转)Maven学习总结(八)——使用Maven构建多模块项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(八)——使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为doma ...

  8. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  9. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

  10. Git 学习(八)其他

    Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼:  包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...

随机推荐

  1. 自助式bi工具为什么这么受欢迎?

    ​目前比较流行的一种BI形式,当属于自助式BI分析,也就是自助分析平台,即在这个倡导凡事自助的社会中,BI也要以这种形式来呈现.自助式的BI分析相比较于传统的形式,是有很多优点的,我为大家整理了一版. ...

  2. WPF中常用控件(TreeView, ComboBox, DataGrid, ListView)使用MVVM模式绑定的demo

    之前几篇关于TreeView的博客中只是贴了源代码,并没有把整个项目上传到github.最近就想着把我常用的几个控件做成一个demo,这样也方便自己以后查看.本人也是WPF新手,但是我并没有打算就往这 ...

  3. c语言刷lleetcode记录

    155. 最小栈 笔记: 在push(压栈)的时候思路: typedef struct MinStack{ int data; struct MinStack *next; } MinStack; / ...

  4. 从零开始Pytorch-YOLOv3【笔记】(一)配置文件解读

    前言 这是github上的一个项目YOLO_v3_tutorial_from_scratch,它还有相应的blog对其详细的解读.机器之心翻译了他的tutorial:从零开始PyTorch项目:YOL ...

  5. 【行业Tip】三电是什么

    电动汽车的"三电"是指:电池.电机.电控.

  6. php使用kafka代码

    生产者 producer.php文件 <?php /** * Created by PhpStorm. * User: shiyibo * Date: 2019/2/24 * Time: 12: ...

  7. php 23种设计模型 - 访问者模式

    访问者模式是一种行为型模式,访问者表示一个作用于某对象结构中各元素的操作.它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色. 访问者模式利用了双重分派.先将访问者传 ...

  8. 如何用three.js(webgl)搭建3D粮仓、3D仓库、3D物联网设备监控-第十二课

    序: 最近因为疫情,居家办公,索性翻翻之前的项目案例,总结总结. 这次疫情,深圳停摆,群众也挺恐慌的,封闭前一天,超市被抢购一空,虽然官方媒体一再强调,材米油盐蔬菜肉类管够,但是任然挡不住群众们的抢购 ...

  9. TypeScript-axios模块进行封装的操作与一些想法

    所谓封装与模块化,对我这种初学者来说,个人理解就是解耦,比如说,当我们前端一个项目使用了现在流行的模块,但是没有对其进行封装处理,包括一些相同的代码逻辑,把他们分散在各个组件当中,这样一来整个项目对于 ...

  10. 面试官:Redis中的缓冲区了解吗

    hello 大家好,我是七淅(xī). Redis 大家肯定不陌生,但在使用层面看不到的地方,就容易被忽略.今天想和大家分享的内容是 Redis 各个缓冲区的作用.溢出的后果及优化方向. 在开始正文前 ...