文件系统路径说明,利用keepalived实现lvs的高可用

2019-12-03 22:13 来源:未知

一. Linux文件系统路径说明

   熟悉windows系统的,都知道文件路径表示,如C:UserrichDocumnetstest.doc。

  在linux中目录称为虚拟目录(virtual directory) 根目录是root,根目录下的目录和文件会按照访问它们的目录路径一一列出。如:/home/rich/Documnets/test.doc(斜杠与windows系统相反)。  路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。 在linux pc上安装的第一块硬盘称为根驱动器。 根驱动器包含了虚拟目录的核心,其它目录都是从那里开始构建的。

  在根驱动器上创建一些特别的目录称为挂载点(mount point). 挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。

  通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中,如下图:
     图片 1

  上面展示了计算机中的两块硬盘。一块硬盘和虚拟目录的根目录关联起来。剩下的硬盘就可以挂载到虚拟目录结构中的任何地方。在上面的例子中,第二块硬盘被挂载到/home位置。

shell函数

图片 2

二.系统文件目录结构说明

  图片 3

目录

说明

/

虚拟目录的根目录,通常不会在这里存储文件

/bin

二进制目录,存放用户级的GNU工具

/boot

启动目录,存放启动文件

/dev

设备目录,系统在这里创建设备节点

/etc

系统配置文件目录

/home

主目录,系统在这里创建用户目录

/lib

库目录,存放系统和应用程序的库文件

/media

媒体目录,可移动媒体设备的常用挂载点

/mnt

挂载目录,另一个可移动媒体设备的常用挂载点

/opt

可选目录,常用于存放第三方软件包和数据文件

/proc

进程目录,存放现有硬件及当前进程的相关信息

/root

Root用户的主目录

/sbin

系统二进制目录,存放许多gnu管理员级工具

/run

运行目录,存放系统运作时的运行时数据

/srv

服务目录,存放本地服务的相关文件

/sys

系统目录,存放系统硬件信息的相关文件

/tmp

临时目录,可以在该目录中创建删除临时工作文件

/usr

用户二进制目录,大量用户级的gnu工具和数据文件存储

/var

可变目录,用以存放经常变化的文件,比如日志文件

为什么要使用shell函数

linux别的的作用

  1. [root@lamp ~]# alias

  2. alias cp='cp -i'

  3. alias l.='ls -d .* --color=auto'

  1. alias ll='ls -l --color=auto'

  2. alias ls='ls --color=auto'

  3. alias mv='mv -i'

  4. alias rm='rm -i'

  5. alias vi='vim'

  6. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

设置别名与使用

  1. [root@lamp ~]# alias cdone='cd /'
  1. [root@lamp ~]# alias

  2. alias cdone='cd /'

  3. alias cp='cp -i'

  4. alias l.='ls -d .* --color=auto'

  1. alias ll='ls -l --color=auto'

  2. alias ls='ls --color=auto'

  3. alias mv='mv -i'

  4. alias rm='rm -i'

  5. alias vi='vim'

  6. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

  7. [root@lamp ~]# cdone

  8. [root@lamp /]# pwd

  9. /

函数也是具有和别名类似的功能。函数的作用就是把程序里多次调研相同的代码部分定义成一份,然后为这一份代码起个名字,其它所有的重复调用这部分代码都只用调用这个名字就可以。当需要修改这部分重复代码时,只需要改变函数体内的一份代码即可实现调用修改。

使用函数的优势:

1、把相同的程序段定义成函数,可以减少整个程序的代码量。

2、增加程序的可读性,以及便于管理。

3、可实现程序功能模块化,不同的程序使用函数模块化。

4、让程序代码结构更清晰。

单主模型IPVS示例

shell函数语法

语法格式:

  1. 简单语法格式

  2. 函数名(){

  3.   指令...

  4.   return n

  5. }

  6. 规范语法格式

  7. function 函数名(){

  8.   指令...

  9.   return n

  10. }

注意:shell的返回值是exit,函数里用return输出返回值。

配置keepalive

高可用的ipvs集群示例:修改keepalived配置文件

shell函数的执行

调用函数

1)直接执行函数名即可(不带括号)。

函数名

注意:1、执行函数时,函数后的小括号不需要。2、函数定义及函数体必须在要执行的函数名的前面定义,shell的执行从上到下按行执行。

2)带参数的函数执行方法。

函数名 参数1 参数2

注意:函数的传参和脚本的传参类似,只是脚本名换成函数名即可。

函数后接的参数说明:1、shell的位置参数($1、$2、$3、$4、$5、$#、$*、$?、$@)都可以是函数的参数。2、此时父脚本的参数临时地被函数参数所掩盖或隐藏。3、$0比较特殊,它仍然是父脚本的名称。4、当函数完成时,原来的命令行脚本的参数即恢复。5、在shell函数里面,return命令功能与shell里的exit类似,作用是跳出函数。6、在shell函数体里使用exit会退出整个shell脚本,而不是退出shell函数。7、return语句会返回一个退出值(返回值)给调用函数的程序。8、函数的参数变量是在函数体里面定义,如果是普通变量,一般使用local i定义。

修改主机:192.168.234.27的keepalived配置文件

  1 [root@234c27 ~]# vim /etc/keepalived/keepalived.conf
  2 ! Configuration File for keepalived
  3 
  4 global_defs {
  5 notification_email {
  6 root@localhost  //接受邮件地址
  7 }
  8 notification_email_from keepalived@localhost  //发送邮件地址
  9 smtp_server 127.0.0.1  //发送邮件服务器IP
 10 smtp_connect_timeout 30  //邮件连接超时时长
 11 router_id kptwo  //路由id
 12 vrrp _mcast_group4 234.10.10.10  //指定vrrp协议的多播地址
 13 }
 14 
 15 vrrp_instance VI_1 {  //vrrp协议的
 16 state MASTER  //lvs的MASTER服务器
 17 interface ens37  //
 18 virtual_router_id 50  //虚拟路由
 19 priority 100  //权重为100.越大越先
 20 advert_int 1  //发送组博包的间隔
 21 authentication {  //验证
 22 auth_type PASS  //方式为pass( 明文)
 23 auth_pass 1111  //密码
 24 }
 25 virtual_ipaddress { //keepalived虚拟ip
 26 10.0.0.100/24
 27 }
 28 }
 29 virtual_server 10.0.0.100 80 {
 30     delay_loop 6  //检查后端服务器的时间间隔
 31     lb_algo wrr  //定义调度方法
 32     lb_kind DR  //集群的类型
 33     #persistence_timeout 50  //持久连接时长
 34     protocol TCP  //服务协议,仅支持TCP
 35     real_server 192.168.234.47 80 {  //后端real_server服务器地址
 36         weight 1 //权重
 37         HTTP_GET {  //应用层检测
 38             url {
 39               path /  //定义要监控的URL
 40               status_code 200  //判断上述检测机制为健康状态的响应码
 41             }
 42             connect_timeout 3  //连接请求的超时时长
 43             nb_get_retry 3  //重试次数
 44             delay_before_retry 3  //重试之前的延迟时长
 45         }
 46     }
 47     real_server 192.168.234.57 80 {
 48         weight 2
 49         HTTP_GET {
 50             url {
 51                 path /
 52                 status_code 200
 53             }
 54             connect_timeout 3
 55             nb_get_retry 3
 56             delay_before_retry 3
 57         }
 58     }
 59 }

shell函数范例

开发脚本建立两个简单函数并调用执行。

  1. [root@lamp /]# cat fun01.sh

  2. #!/bin/bash

  3. test_fun(){

  4.   echo "i am shell fun."

  5. }

  6. test_fun

  7. [root@lamp /]# sh fun01.sh

  8. i am shell fun.

调用其它脚本文件中的函数。

  1. [root@lamp /]# cat fun01.sh

  2. #!/bin/bash

  3. . /fun02.sh

  4. test_fun(){

  5.   echo "i am shell fun."

  6. }

  7. test_fun

  8. test_fun02

  9. [root@lamp /]# cat fun02.sh

  10. #!/bin/bash

  11. test_fun02(){

  12.   echo "i am shell fun02."

  13. }

  14. [root@lamp /]# sh fun01.sh

  15. i am shell fun.

  16. i am shell fun02.

传参

  1. [root@lamp /]# cat fun01.sh

  2. #!/bin/bash

  3. . /fun02.sh

  4. test_fun(){

  5.   echo "i am shell fun."

  6. }

  7. test_fun

  8. test_fun02 $1

  9. [root@lamp /]# cat fun02.sh

  10. #!/bin/bash

  11. test_fun02(){

  12.   echo "i am shell $1."

  13. }

  14. [root@lamp /]# sh fun01.sh golden

  1. i am shell fun.

  2. i am shell golden.

函数传参转成参数命令行传输,对任意指定url判断是否异常。

  1. [root@lamp /]# curl -I -m 3 -o /dev/null -s -w %{http_code} www.baidu.com

-I 仅测试HTTP头

-m 3 最多查询3秒

-o /dev/null 屏蔽原有输出信息

-s silent 模式,不输出任何东西

-w %{http_code} 控制额外输出

  1. [root@lamp ~]# cat check_url.sh
  1. #!/bin/bash

  2. [ -f /etc/init.d/functions ]&& . /etc/init.d/functions

  3. usage(){

  4.   echo "USAGE:$0 url."

  5.   exit 1

  6. }

  7. RETVAL=0

  8. check(){

  9.   wget -I 10 --spider -t 2 $1 &>/dev/null

  10.   RETVAL=$?

  11.   if [ $RETVAL -eq 0 ];then

  12.     action "$1 url" /bin/true

  13.   else

  1.     action "$1 url" /bin/false

  2.   fi

  3.   return $RETVAL

  4. }

  5. main(){

  6.   if [ $# -ne 1 ];then

  7.     usage

  8.   fi

  9.   check $1

  10. }

  11. main $*

  12. [root@lamp ~]# sh check_url.sh www.baidu.com

  13. www.baidu.com url [ OK ]

  14. [root@lamp ~]# sh check_url.sh www.baiduxxxx.com

  15. www.baiduxxxx.com url [FAILED]

给字符串加颜色。

  1. [root@lamp ~]# cat color.sh

  2. #!/bin/bash

  3. RED_COLOR='E[1;31m'

  4. GREEN_COLOR='E[1;32m'

  5. YELLOW_COLOR='E[1;33m'

  6. BLUE_COLOR='E[1;34m'

  7. PINK='E[1;35m'

  8. RES='E[0m'

  9. echo -e "$RED_COLOR red $RES"

  10. echo -e "$GREEN_COLOR GREEN $RES"

  11. echo -e "$YELLOW_COLOR YELLOW $RES"

  12. echo -e "$BLUE_COLOR BLUE $RES"

  13. echo -e "$PINK PINK $RES"

输出结果。

图片 4

传2个参数,颜色名称和内容,输出带颜色的内容。

  1. [root@lamp ~]# cat color_str.sh
  1. #!/bin/bash

  2. RED='E[1;31m'

  3. GREEN='E[1;32m'

  4. YELLOW='E[1;33m'

  5. BLUE='E[1;34m'

  6. PINK='E[1;35m'

  7. RES='E[0m'

  8. usage(){

  9.   echo "USAGE:$0 color contents."

  10.   exit 1

  11. }

  12. color(){

  13.   if [ "$1" = "red" ];then

  14.     echo -e "${RED}$2 $RES"

  15.   elif [ "$1" = "green" ];then

  16.     echo -e "${GREEN}$2 $RES"

  17.   elif [ $1 = "yellow" ];then

  18.     echo -e "${YELLOW}$2 $RES"

  19.   elif [ "$1" = "blue" ];then

  20.     echo -e "${BLUE}$2 $RES"

  21.   elif [ "$1" = "pink" ];then

  22.     echo -e "${PINK}$2 $RES"

  23.   else

  1.     echo "$2"

  2.   fi

  3. }

  4. main(){

  5.   if [ $# -ne 2 ];then

  6.     usage

  7.   fi

  8.   color $1 $2

  9. }

  10. main $*

输出结果。

图片 5

修改主机:192.168.234.37的keepalived配置文件

[root@234c37 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id kptwo
   vrrp _mcast_group4 234.10.10.10
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens37
    virtual_router_id 50
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       10.0.0.100/24
    }
}
virtual_server 10.0.0.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1:80
    real_server 192.168.234.47 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.234.57 80 {
        weight 2
        HTTP_GET {
            url {
              path /
                status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

case结构条件句

查看keepalived

[root@234c37 ~]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
…………
[root@234c37 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
//暂无ipvsadm
TAG标签:
版权声明:本文由澳门金莎娱乐网站发布于澳门金莎娱乐网站,转载请注明出处:文件系统路径说明,利用keepalived实现lvs的高可用