当前位置: 首页 > news >正文

linux集群技术(二)--keepalived(高可用集群)(二)

  1. 案例1--keepalived
  2. 案例2--keepalived  +  Lvs集群

1.案例1--keepalived

        1.1   环境

初识keepalived,实现web服务器的高可用集群。
    Server1:       192.168.26.144
    Server2:  192.168.26.169
           VIP:        192.168.26.190

        1.2   server1

创建etc下的keepalived目录,编辑配置文件:

# yum -y install keepalived

# vim /etc/keepalived/keepalived.conf

        ! Configuration File for keepalived
        global_defs {
         router_id 1                            #设备在组中的标识,设置不一样即可
         }

        #vrrp_script chk_nginx {                        #健康检查
        # script "/etc/keepalived/ck_ng.sh"     #检查脚本
        # interval 2                            #检查频率.秒
        # weight -5                             #priority减5
        # fall 3                                        #失败三次        
        # }

        vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。
            state MASTER                        #主或者从状态
            interface ens32                     #监控网卡
            mcast_src_ip 192.168.0.118          #心跳源IP
            virtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分
            priority 100                        #优先级
            advert_int 1                        #心跳间隔

            authentication {                    #秘钥认证(1-8位)
                auth_type PASS
                auth_pass 123456
            }

            virtual_ipaddress {                 #VIP
            192.168.26.190/24
                }

        #  track_script {                       #引用脚本
        #       chk_nginx
        #    }

        }

# scp -r /etc/keepalived/keepalived.conf  192.168.26.169:/etc/keepalived/

        用scp复制给server2

# systemctl enable keepalived.service
    开机启动keepalived

安装Nginx:

        rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
        yum -y install nginx
        systemctl enable nginx.service
        systemctl start nginx.service
        vim /usr/share/nginx/html/index.html

systemctl start keepalived.service

        1.3   server2

BACKUP服务器的配置需要几处修改:

# yum -y install keepalived

# vi /etc/keepalived/keepalived.conf

        router_id 1  改为  router_id 2

        state MASTER改为  state BACKUP
        mcast_src_ip 192.168.26.144改为backup服务器实际的IP mcast_src_ip 192.168.26.169
        priority 100改为priority 99

# systemctl enable keepalived.service

安装Nginx:

        rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
        yum -y install nginx
        systemctl enable nginx.service
        systemctl start nginx.service
        vim /usr/share/nginx/html/index.html

systemctl start keepalived.service

        1.4  客户机测试访问

访问VIP  http://192.168.26.190
拔掉master的网线。
访问VIP  http://192.168.26.190,观察网页已经切换

        1.5   关于keepalived对web状态未知的问题

对于上述实验;若maser服务器上的nginx服务出现了问题,此时用户再访问访问服务器是有问题的;

原因是keepalived监控的是接口IP状态。无法监控nginx服务状态

编辑监控脚本:

        --server1  添加Nginx监控脚本:

        # vim /etc/keepalived/ck_ng.sh

                #!/bin/bash
                #检查nginx进程是否存在
                counter=$(ps -C nginx --no-heading|wc -l)
                if [ "${counter}" = "0" ]; then
                #尝试启动一次nginx,停止5秒后再次检测
                    service nginx start
                    sleep 5
                    counter=$(ps -C nginx --no-heading|wc -l)
                    if [ "${counter}" = "0" ]; then
                #如果启动没成功,就杀掉keepalive触发主备切换
                        service keepalived stop
                    fi
                fi

        # chmod +x /etc/keepalived/ck_ng.sh

         --server2  添加Nginx监控脚本:

        # vim /etc/keepalived/ck_ng.sh

                #!/bin/bash
                #检查nginx进程是否存在
                counter=$(ps -C nginx --no-heading|wc -l)
                if [ "${counter}" = "0" ]; then
                #尝试启动一次nginx,停止5秒后再次检测
                    service nginx start
                    sleep 5
                    counter=$(ps -C nginx --no-heading|wc -l)
                    if [ "${counter}" = "0" ]; then
                #如果启动没成功,就杀掉keepalive触发主备切换
                        service keepalived stop
                    fi
                fi

        # chmod +x /etc/keepalived/ck_ng.sh

启动监控脚本    清除掉配置文件中的注释。    重启keepalived即可

2.案例2--keepalived  +  Lvs集群

        2.1  环境

keepalived+lvs集群

192.168.0.116    26.144  dr1    负载均衡器   master
192.168.0.117    26.169  dr2    负载均衡器
192.168.0.118    26.165    rs1     web1
192.168.0.119    26.166    rs2     web2

        2.2  在master上安装配置Keepalived:

# yum install keepalived  ipvsadm -y       ipvsadm安装并不启动

# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {                        
    router_id Director1    #两边不一样。
    }
    
vrrp_instance VI_1 {                
    state MASTER                #另外一台机器是BACKUP    
    interface ens33                #心跳网卡    
    virtual_router_id 51            #虚拟路由编号,主备要一致
    priority 150                #优先级    
    advert_int 1                #检查间隔,单位秒    
    authentication {
        auth_type PASS
        auth_pass 1111
        }
    virtual_ipaddress {
        192.168.26.190/24       dev      ens33       #VIP和工作接口
        }
    }
    
virtual_server 192.168.26.190 80 {        #LVS 配置,VIP
    delay_loop 3                #服务论询的时间间隔,#每隔3秒检查一次real_server状态
    lb_algo rr                #LVS 调度算法
    lb_kind DR                 #LVS 集群模式
    protocol TCP
    real_server 192.168.26.165 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3       #健康检查方式,连接超时时间
            }
        }
    real_server 192.168.26.166 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            }
        }
}

        2.3   在backup上安装keepalived:

# yum install keepalived   ipvsadm -y      ipvsadm安装并不启动

拷贝master上的keepalived.conf到backup上:

        # scp  /etc/keepalived/keepalived.conf 192.168.26.169:/etc/keepalived/

拷贝后,修改配置文件:

        router_id Director2
        state    BACKUP
        priority 100

        2.4   master和backup上启动服务:

#systemctl enable keepalived
# systemctl start keepalived
#reboot

        2.5   web服务器配置

web1和web2同配置

安装web测试站点:

        yum install -y httpd && systemctl start httpd && systemctl enable httpd
        netstat -antp | grep httpd
        # elinks 127.0.0.1

        自定义web主页,以便观察负载均衡结果

配置虚拟地址:

        #cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
        #vim /etc/sysconfig/network-scripts/ifcfg-lo:0
        DEVICE=lo:0
        IPADDR=192.168.0.20
        NETMASK=255.255.255.255
        ONBOOT=yes
        其他行注释掉

配置路由:

        #vim /etc/rc.local
        /sbin/route add -host 192.168.0.20  dev lo:0
        在两台机器(RS)上,添加一个路由:route add -host 192.168.0.20 dev lo:0    
        确保如果请求的目标IP是$VIP,那么让出去的数据包的源地址也显示为$VIP

配置ARP:

        # vim /etc/sysctl.conf

        net.ipv4.conf.all.arp_ignore = 1
        net.ipv4.conf.all.arp_announce = 2
        net.ipv4.conf.default.arp_ignore = 1
        net.ipv4.conf.default.arp_announce = 2
        net.ipv4.conf.lo.arp_ignore = 1
        net.ipv4.conf.lo.arp_announce = 2

        忽略arp请求  可以回复

        # reboot

        2.6   测试:

1)观察lvs路由条目                      master上 查询 # ipvsadm -L

2)观察vip地址在哪台机器上        master上 查询 # ip a

3)客户端浏览器访问vip

4)关闭master上的keepalived服务,再次访问vip
        master上 关闭 # systemctl stop keepalived.service 

5)关闭web1站点服务,再次访问VIP      

        web1 # systemctl stop httpd

相关文章:

linux集群技术(二)--keepalived(高可用集群)(二)

案例1--keepalived案例2--keepalived Lvs集群1.案例1--keepalived 1.1 环境 初识keepalived,实现web服务器的高可用集群。 Server1: 192.168.26.144 Server2: 192.168.26.169 VIP: 192.168.26.190 1.2 server1 创建etc下的…...

C# 控制台程序的开发和打包为一个exe文件

目录前言一、我的第一个C#控制台程序二、发布为一个exe文件前言 本文通过C#编写一个简单的示例计算器,来演示C#的使用和使用 Visual Studio 打包为一个 exe 文件。 一、我的第一个C#控制台程序 所谓控制台程序,就是没有界面,运行程序后只有…...

Redis实战案例

文章目录1、SpringBoot整合Redis1.1、新建项目1.2、接口编写1.3、集成Redis1.3、测试1.4、序列化问题2、Redis实现分布式缓存2.1、背景介绍2.2、代码编写2.3、缓存改造2.4、小结3、RedisAOP自定义注解,优雅实现分布式缓存3.1、自定义注解3.2、AOP切面类3.3、测试3.4…...

slice和splice区别

slice和splice区别 splice和slice是数组中的两个重要的方法。 slicesplice不会改变原数组改变原数组返回原数组中的部分元素返回原数组中被删除的元素组成的新数组用来选择数组中的元素用于在数组中插入或者删除元素 1.splice的语法 array.splice(index,howmany,item1,…,ite…...

动态规划从入门到精通-蓝桥杯

一、了解动态规划1.简单来说动态规划是一种状态转移与递推2.例题引入——最少硬币问题有多个不同面值的硬币(任意面值); 数量不限; 输入金额S,输出最少硬币组合。 (回顾用贪心求解硬币问题。)贪心法硬币面值1、2、5。支…...

Docker部署Prometheus

文章目录Prometheus相关介绍Docker部署Prometheus说明安装Prometheus搜索镜像拉取镜像配置启动容器进入容器遇到的问题Are you trying to mount a directory onto a file (or vice-versa)?其他可能的错误Prometheus相关介绍 官方介绍,非常的清楚: http…...

JavaScript的执行顺序

前言 在说 JavaScript 的执行顺序之前,我们先回答一下以下几组程序的输出结果 第 1 组 const output (v) > {console.log(v); };setTimeout(() > {console.log(1); }, 0); output(2); console.log(3);// 2 3 1第 2 组 new Promise((resolve) > {conso…...

C++11智能指针std::shared_ptr介绍及使用

介绍 shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting),比如我们把只能指针赋值给另外一个对象,那么对象多了一个智能指针指向它,所以这个时候引用计数…...

华为OD机试 - 数字的排列(Python) | 机试题+算法思路+考点+代码解析 【2023】

数字的排列 题目 小华是个很有对数字很敏感的小朋友, 他觉得数字的不同排列方式有特殊的美感。 某天,小华突发奇想,如果数字多行排列, 第一行1个数, 第二行2个, 第三行3个, 即第n行n个数字,并且奇数行正序排列, 偶数行逆序排列,数字依次累加。 这样排列的数字一定很…...

Android 事件分发机制(4)-常见面试题

目录 1.你了解过Android的事件分发机制吗?请大致介绍一下 2、如果父view中不拦截down事件,拦截move,up事件,在子view中设置了requestDisallowInterceptTouchEvent(true);(请求父view不拦截事件)这个标志后&#xff0c…...

计算机四级 [操作系统] | 选择题 2 重点标注版

1.某一个单道批处理系统几乎同时依次到达4个作业,这4个作业的预计运行时间分别为8、4、4和4分钟,按照短作业优先的调度算法运行,请问该批作业的平均周转时间为多少 B A. 14分钟 B. 11分钟 C. 20分钟 D. 10分钟 2.下列与进程具有一一对应的关…...

想玩好ChatGPT?不妨看看这篇文章

相信点进来的铁汁,此时已经对 ChatGPT 有所了解,并想上手体验一番 首先大伙儿要注意,不要被骗了。 现在很多商家提供的 ChatGPT 服务,不仅价格奇高,而且据我所知,有些压根不是 ChatGPT 。 想玩最好去官网注册,具体方法大伙自个儿查一查嗷。 怎么用好 ChatGPT 虽然 …...

day31 IO流

文章目录回顾collectionArrayTestListHashSetTsetHashMapTestPropertiesTreeSetTestIO流FileInputStreamTest01 文件流初步FileInputStreamTest02 循环读FileStreamTest03FileInputStreamTes04 需要掌握FiLeInputStreamTest5FileOutputStreamTest01Copy1 文件拷贝FileReaderTes…...

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…...

深度学习基础(一)

记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。 而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的…...

Maven 常用命令

mvn archetype: create :创建Maven 项目mvn compile :编译源代码。mvn deploy:发布项目。mvn test-compile :编译测试源代码mvn test:运行应用程序中的单元测试mvn site:生成项目相关信息的网站mvn clean:清除项目目录中的生成结果mvn package:根据项目生成的iar/war等mvn inst…...

2023年100道最新Android面试题,常见面试题及答案汇总

除了需要掌握牢固的专业技术之外,还需要刷更多的面试去在众多的面试者中杀出重围。小编特意整理了100道Android面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧拿去吧~~文末有答案Q1.组件化和arouter原理Q2.自定义view&…...

[JavaEE系列] 详解面试中HTTP协议HTTPS协议

文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接(三次握手)三次握手中常见的面试题:TCP断开连接(四次挥手)四次挥手中常见的面试题&#x…...

mac 好用的类似Xshell工具

下载royal TSX 5.1.1 http://share.uleshi.com/f/9490615-685692355-33bf1e修改mac的etc/hosts文件权限访达(鼠标右键) -> 前往文件夹 ->输入/private --> 打开etc/hosts --> 显示简洁(鼠标右键) --> 权限改成读和写hosts文件写入如下内容:# Royal T…...

浅谈SQL中的union和union all

文章目录概念基础语法使用技巧区别总结概念 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL 基础语法 -- u…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

macOS 终端智能代理检测

🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...