list1234 发表于 2019-1-6 12:16:20

菜鸟学Linux 第084篇笔记 lvs持久连接和awk简单使用

  菜鸟学Linux 第084篇笔记 lvs持久连接和awk简单使用
  内容总览
  lvs持久连接
  awk, gawk 简单使用
  awk变量
  awk操作符
  awk 模式和动作 pattern action
  awk 数组 array
  LVS持久连接
  无论使用任何算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至
  此前选定的RS。
  持久连接模板(内存缓冲区)
  每一个客户端 及分配给它的RS的映射关系
  在基于ssl,需要用到持久连接
  PPC 将来自于同一个客户端对同一个服务的请求,始终定向至此前选定的RS
  持久端口连接
  ipvsadm -A -t 192.168.11.122:80 -p 300
  PCC 将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS,
  持久客户端连接(把所有端口全部都定义为集群服务,一律向RS转发)
  ipvsadm -A -t 192.168.11.122:0 -p 300
  PNMPP 持久防火墙标记连接
  作用是将pcc的功能再进行优化,pcc虽然可以持久客户端连接,但是会将所有的
  port都会转给real server, 而PNMPP则可以限制其只有某些个端口进行转发
  原理, 是使用iptables标记某些端口将这些端口标记为一个数字
  然后ipvsadm -f flag支持接收标记,所以当收到所标记的数值时就会将
  其调度到real server
  For example, say we want to create one-hour persistent port affinity between
  ports 80 and 443 on VIP 172.16.100.6 for real servers 172.16.100.7 and 172.16.100.8 :
  /sbin/iptables -F -t mangle
  /sbin/iptables -A PREROUTING -i eth0 -t mangle -p tcp-d 172.16.100.6
  --dport 80 -j MARK --set-mark 1 (此为一行命令)
  /sbin/iptables -A PREROUTING -i eth0 -t mangle -p tcp-d 172.16.100.6
  --dport 443 -j MARK --set-mark 1 (此为一行命令)
  /sbin/ipvsadm -A -f1 -s rr -p 3600
  /sbin/ipvsadm -a -f1 -r 172.16.100.7 -m
  /sbin/ipvsadm -a -f1 -r 172.16.100.8 -m
  配置持久连接
  ipvsadm -A|E ... -p timeout
  timeout: 持久连接时长,默认300秒,单位是秒
  rsync server (inotify+rsync server)
  更新速度比较慢,尤其文件比较大时,再用此种方式不太合适
  金山开发的工具 sersync 基于C++开发的
  支持并发多线程复制,执行性能非常好
  可以接收inotify发来的信息
  适用服务器比较多, 需要复制大文件的环境比较适用
  (自行研究并配置使其可工作)
  grep文本过虑器
  grep 'pattern' input_file ...
  sed 流编辑器 实现对文本编辑
  sed 'COMMAND/pattern/' input_file...
  awk 报告生成器
  格式化以后,显示
  nawk
  gawk
  # awk 'script' file file2, ...
  # awk 'PATTERN { action }' file file2 ...
  $0 表示一整行
  $1, $2, $.... 表示切片的第N个
  print 打印其后边所定义的变量或字符
  printf 打印其后边所定义的变量或字符(有格式的输出)
  printf format, item1,item2..
  format格式以%开头,后跟一个字符,如下:
  %c character显示字符的ASCII码
  %d, %i 十进制整数
  %e, %E 科学计数法显示数值
  %f显示浮点数
  %g, %G 以科学计数法的格式或浮点数的格式显示数值
  %s显示字符串
  %u无符号整数
  %%显示%自身
  修饰符
  N 显示宽度(N要替换为数值)
  - 左对齐
  + 显示数值符号
  如 # awk -F: '{printf "%-15s%i\n",$1,$3}' /etc/passwd
  awk变量
  记录变量
  OFS="#" output Filed Separater,定义输出分隔符为#
  FS=":"定义输入分隔符为:
  awk -F: 也可以定义输入分隔符
  数据变量
  NRthe number of input records,
  awk已经处理过的行数,如果多个文件,行数会累加
  FNR 与NR不同的是,FNR是记录已经被处理过的当前文件的行数
  NF Number of field, 显示行共有的字段个数,注意数值会随着分隔符不同而变化
  自定义变量
  定义变量test并打印出该变量
  # awk -v test="hello test" 'BEGIN{print test}'
  第二种定义变量并打印方式
  # awk 'BEGIN{test="hello test";print test}'
  awk的操作符:
  1.算术操作符:
  -x: 负值
  +x: 转换为数值;
  x^y:
  x**y: 次方
  x*y: 乘法
  x/y:除法
  x+y:
  x-y:
  x%y:
  2.字符串操作符:
  只有一个,而且不用写出来,用于实现字符串连接;
  3.赋值操作符:
  =
  +=
  -=
  *=
  /=
  %=
  ^=
  **=
  ++
  --
  需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;
  4.布尔值
  awk中,任何非0值或非空字符串都为真,反之就为假;
  5.比较操作符:
  x < yTrue if x is less than y.
  xyTrue if x is greater than y.
  x >= yTrue if x is greater than or equal to y.
  x == yTrue if x is equal to y.
  x != yTrue if x is not equal to y.
  x ~ yTrue if the string x matches the regexp denoted by y.
  x !~ yTrue if the string x does not match the regexp denoted by y.
  subscript in arrayTrue if the array array has an element with
  the subscript subscript.
  6.表达式间的逻辑关系符:
  &&
  ||
  7.条件表达式:C语言的语法
  selector?if-true-exp:if-false-exp
  8.函数调用:
  function_name (para1,para2)
  awk的模式和action:
  awk 'program' input-file1 input-file2 ...
  其中的program为:
  pattern { action }
  pattern { action }
  ...
  一、常见的模式类型:
  1、Regexp: 正则表达式,格式为/regular expression/
  如: # awk -F: '/^\(/sbin\)/{print $NF}' /etc/passwd
  2、expresssion: 表达式,其值非0或为非空字符时满足条件,
  如:$1 ~ /oot$/ 或 $1 == "root",用运算符~(匹配)和!~(不匹配)。
  # awk -F: '$7~"bash$"{print $1,$7}' /etc/passwd
  匹配$7里以bash结尾的行 并显示$1,$7
  3、Ranges: 指定的匹配范围,格式为pat1,pat2
  # awk -F: '"^r","^m"{print $1,$3,$7}' /etc/passwd
  表示匹配从第一个pattern到pattern所匹配到的行
  4、BEGIN/END:特殊模式,仅在awk命令执行前运行一次或结束前运行一次
  如# awk -F: '$3
页: [1]
查看完整版本: 菜鸟学Linux 第084篇笔记 lvs持久连接和awk简单使用