centos7.5部署高可用k8s(一) ---- 部署LB负载均衡haproxy+keepalived

2023-05-16

在centos7.5系统部署一个k8s高可用集群。k8s版本采用v1.15.2。docker版本18.09

根据官方的文档,部署集群前首先要部署负载均衡器,这里简要记录下LB负载均衡器的部署过程。

环境说明

节点IP备注
haproxy-1、keepalived-110.0.0.21代理节点1
haproxy-2、keepalived-210.0.0.22代理节点2
vip10.0.0.10LB入口IP
k8s-master0110.0.0.11k8s主节点1
k8s-master0210.0.0.12k8s主节点2
k8s-master0310.0.0.13k8s主节点3
k8s-node0110.0.0.14k8s工作节点

 

 

 

 

 

 

 

 

一 部署haproxy反向代理

1.在haproxy-1和haproxy-2节点上安装haproxy

$ yum install haproxy -y

2.备份然后编辑haproxy的配置文件如下:

$ mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.default

$ vi /etc/haproxy/haproxy.cfg

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#http前端代理配置 指定代理端口8080

frontend            proxy_http
    bind            *:8080
    mode            http
    log             global
    use_backend     server_http

#https前端代理配置 指定代理端口6444
frontend            proxy_https

#这里用*表示当机器有多个IP时,不论请求的IP是哪个,都可以接收请求。适用于有VIP的场景
    bind            *:6444
    mode            tcp 
    log             global
    use_backend     server_https

#http后端配置

backend server_http
    mode            http
    balance         roundrobin
    server  nginx  10.0.0.21:80

#https后端配置

backend server_https
    mode            tcp
    balance         roundrobin
    server rancher01 10.0.0.11:6443
    server rancher02 10.0.0.12:6443
    server rancher03 10.0.0.13:6443
 

注:上面http的配置并未真正使用到,只是作为测试使用

3.启动haproxy服务

$ systemctl start haproxy

本次部署启动的时候出现了一个错误提示:

Starting proxy mysql: cannot bind socket [0.0.0.0:6444]

若遇到该问题,需要执行以下命令:

$ setsebool -P haproxy_connect_any=1

查看haproxy是否成功启动:

$ systemctl status haproxy

 

4.测试haproxy配置是否正确

在haproxy-1上安装nginx

这里需要安装epel源

$ yum install nginx -y

启动nginx

$ where is nginx

#根据上面的地址启动

$ /usr/sbin/nginx

#检测是否正常启动

$ netstat -nlp |grep -w 80

在haproxy-1上执行如下命令,测试haproxy反向代理是否正常:

$ curl localhost:8080

二 部署keepalived

1.在haproxy-1和haproxy-2上安装keepalived

$ yum install keepalived -y

2.备份然后编辑配置文件

haproxy-1上

$ mv /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.default

$ vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr

   #这里需要将vrrp_strict注释起来,否则设置的VIP无法ping通
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    #指定该节点为主节点,备用节点设置为BACKUP
    state MASTER
    #绑定虚拟IP 的网络接口 要与虚拟机的网络接口对应
    interface ens33
     #整个虚拟组的id,同组配置须保持一致
     virtual_router_id 88
    #主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低
    priority 50
        authentication {
          auth_type PASS
          auth_pass 1111
        }
    #指定虚拟IP,两个节点需设置一样
    virtual_ipaddress {
      10.0.0.5/24
    }
}
 

注意:默认设置中global_defs配置块下面有一个配置项vrrp_strict,这个会导致设置的VIP无法ping通,需要将这个配置项注释起来。

haproxy-2上

$ mv /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.default

$ vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr

   #这里需要将vrrp_strict注释起来,否则设置的VIP无法ping通
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    #指定该节点为主节点,备用节点设置为BACKUP
    state BACKUP
    #绑定虚拟IP 的网络接口 要与虚拟机的网络接口对应
    interface ens33
     #整个虚拟组的id,同组配置须保持一致
     virtual_router_id 88
    #主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低
    priority 30
        authentication {
          auth_type PASS
          auth_pass 1111
        }
    #指定虚拟IP,两个节点需设置一样
    virtual_ipaddress {
      10.0.0.5/24
    }
}

haproxy-2上的keepalived与haproxy-1上的keepalived有两个地方配置不一样,红色标出来的部分

state表明节点的角色,主节点为master,备节点为backup

priority 优先级 vip会优先漂移到优先级高的节点上,备节点的优先级设置数值要比主节点的数值小

 

3.启动keepalived

在haproxy-1和haproxy-2上执行如下命令

$ systemctl start keepalived

#检查是否正常启动

$ systemctl status keepalived

4.测试keepalived是否正常工作

在haproxy-1上查看vip是否已经绑定到网卡上

$ ip a

成功会看到ens33网卡上有两个ip,一个是本机ip 10.0.0.21,一个是vip 10.0.0.10

测试是否能ping通vip

$ ping 10.0.0.10

关闭haproxy-1或者停掉keepalived程序,vip会漂移到haproxy-2机器

 

5.测试keepalived与haproxy配合是否工作

harproxy-1和haproxy-2会监听本机上8080端口。同时vip会绑定在其中一台机器上。当请求绑定有vip的机器的8080端口时,haproxy会将请求转发给后端的nginx,返回nginx页面。

$ curl 10.0.0.10:8080

至此,keepalived+haproxy配置的高可用LB就搭建完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos7.5部署高可用k8s(一) ---- 部署LB负载均衡haproxy+keepalived 的相关文章

  • CentOS 7 上的 Python3.5 的 Pygame

    先谢谢您的帮助 我正在尝试为 Python 3 5 安装 Pygame 我花了很多时间进行研究 发现 Windows 上可以 但 CentOS 上却没有 是否可以在 CentOS 7 上安装 Python 3 5 的 Pygame 如果是这
  • WebSocket 在 django 通用中间件中生成错误

    我正在使用 Django gevent socketio Haproxy 所有套接字功能都工作正常 但在后台它会生成如下所示的错误 似乎 Haproxy 的套接字标头具有非常有限的属性 其中不包含 status code 因此它失败并发送错
  • centos 7安装pymssql时出错

    我在虚拟机 Centos 7 中安装 pymssql 时遇到了这个问题 我安装的python版本是2 7 6 用于安装 pymssql 的命令 pip intall pymssql 错误信息 root dpitstsvr013 magend
  • 使用haproxy的http请求到https请求

    我有一种情况 我想使用 haproxy 将所有 http 请求重定向到 https 请求 假设我有一台安装了 haproxy 的服务器 x 和一台运行实际服务的服务器 y 使用 ssl 现在 我希望 haproxy 接受 http 请求并通
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA
  • 合并 HAProxy 统计数据?

    我有两个 HAProxy 实例 两个实例都启用了统计数据并且工作正常 我正在尝试将两个实例的统计信息合并为一个 以便我可以使用单个 HAProxy 来查看前端 后端统计信息 我尝试在两个 haproxy 实例的同一端口上设置统计侦听器 但这
  • 通过 yum install openssl11 将 CentOS 7 升级到 OpenSSL 1.1.1

    我使用 Centos 7 和 OpenSSL 1 0 2k openssl 1 0 2k 19 el7 x86 64 rpm 我尝试通过以下方式升级到 OpenSSL 1 1 1c yum install openssl11 基本上安装 o
  • 使用 Iperf 进行 haproxy 的 udp 流量

    我正在使用 Docker 容器开展我的个人项目 关于 Haproxy 的 性能评估 我正在使用 Python 进行编程 并使用 iperf 来生成流量 我创建了几个 Docker 容器作为客户端和服务器 客户端应该通过充当负载均衡器的 Ha
  • 系统上未安装 docker-runc

    我最近更新了基于 Centos 7 的机器 从那时起 我无法启动任何码头工人 有人对这个问题有经验吗 如果有 你是如何解决的 感谢您的宝贵帮助 错误日志下方 docker run it centos6 labs ompi161 devtoo
  • 通过 nginx 访问时,php 在 /tmp/systemd-private-nABCDE/tmp 中有自己的 /tmp

    我发现奇怪的行为php and tmp文件夹 Php 在使用时使用另一个文件夹 tmp PHP 5 6 7 nginx php fpm 我以两种方式执行相同的脚本 通过浏览器和通过 shell 但是当通过浏览器启动时 文件不是真实的 tmp
  • 无法安装 phpMyAdmin 错误:php71w-common 与 php-common-5.4.16-43.el7_4.1.x86_64 冲突

    我刚刚安装了 CentOS 7 和 PHP 7 1xx 和 MySQL 但无法安装 phpMyAdmin 我有一条错误消息 但在 Google 上没有答案 是的 只有一个答案 但它本身给了我相同的错误消息 rpm iUvh http dl
  • Google Cloud Compute 上的多个 IP 地址

    我正在尝试使用多个内部 IP 地址设置基于 CentOS 7 的虚拟机 但它似乎并不像 Amazon AWS 那样简单 您可以使用路由为虚拟机添加内部 IP https cloud google com compute docs refer
  • 基于 HAProxy 中的上下文路径动态路由到后端

    我有具体要求 根据我的上下文路径 我必须通过 HAProxy 将流量重定向到不同的服务器 端口 我已经通过 ACL 中的 path beg 实现了相同的效果 下面是配置 use backend a1 if path beg a1 use b
  • 如何在 centos 7 上链接 python3 以使用 openssl11/或最新版本的 openssl (1.1.1)

    我们想在centos 7中升级OpenSSL但没有成功 原因可能是这样的 通过 yum install openssl11 将 CentOS 7 升级到 OpenSSL 1 1 1 https stackoverflow com quest
  • 安装 hunspell 包

    我期待使用 pip 安装 hunspell 包 但它会抛出以下错误 Collecting hunspell Using cached hunspell 0 4 1 tar gz Building wheels for collected p
  • 如何在 Apache 网站内托管 ASP.NET Core Web 应用程序?

    我有一个旧的php使用开发的应用程序Yii2框架托管在Centos路径上的服务器 var www html 该应用程序可在以下位置访问http somedomain com 我正在开发使用新的 API 项目ASP NET MVC Core需
  • GNU shell 函数在意外标记“(”附近出现语法错误

    我想确定我的 makefile 中 Intel Fortran 编译器的版本 因此我添加了一些脚本GNU shell功能如下进行测试 VERIFORT shell ifort version VERIFORT shell ifort ver
  • HAProxy 随机空响应

    我安装了 HAPROXY 以实现两台服务器之间的平衡 不幸的是 HAPROXY 返回随机 ERR EMPTY RESPONSE 我也安装了统计信息 但统计信息没有出现频繁地因为有时会显示统计数据 我和一些朋友仔细检查了我的配置 没有发现问题
  • 如何在 Linux (Red Hat/CentOS) 上更新到特定 R 版本,并保留以前的版本?

    也许更准确的标题是 如何在 Linux Red Hat CentOS 上从就地 EPEL R 安装切换到并行 特定于版本 R 安装 一个 可能是典型的 在 Linux 上升级 R 的故事 History 在过去的某个时刻 我使用由 RHEL
  • HAProxy - 如果第一台机器返回 404,则从第二台机器提供 URL

    我遇到过这样的情况 网站的一部分 某些 URL 路径 由一台后端服务器提供服务 而所有其他 URL 则由 HAProxy 中的不同默认后端提供服务 现在 由于应用程序逻辑的编写方式 可以在两台物理服务器计算机中的任意一台上的同一路径上创建要

随机推荐

  • C++标准模板库(STL)迭代器的原理与实现

    引言 迭代器 iterator 是一种抽象的设计理念 xff0c 通过迭代器可以在不了解容器内部原理的情况下遍历容器 除此之外 xff0c STL中迭代器一个最重要的作用就是作为容器 vector list等 与STL算法的粘结剂 xff0
  • Linux工具 xrandr屏幕操作工具

    说明 xff1a xrandr是RandR xff08 调整大小和旋转 xff09 X 窗口系统扩展的官方配置实用程序 它可用于设置屏幕输出的大小 方向 以及 需配置多台显示器的显示扩展等 属于Xorg的命令集中常用命令之一 xff08 关
  • 小熊派 FreeRTOS+SPI+DMA 驱动 TFT-LCD

    一 文章前言 入手了一块小熊派开发板 xff0c 看到他板子上搭载了一块 TFT LCD 编写编写驱动代码来使用 TFT xff0c 该 TFT 通过 ST7789 驱动芯片进行驱动 xff0c 本文通过 CubeMX 软件配置硬件 SPI
  • 【双系统】Win10/Win11 引导 Ubuntu

    文章目录 纲要注意写在最前1 Win 分区2 Ubuntu刻盘3 安装 Ubuntu4 配置引导 纲要 本文主要介绍了如何在已安装 Win10 Win11 前提下安装 Ubuntu 双系统 xff0c 并利用 Win10 Win11 的 M
  • 2.6 常见关系数据库产品

    常见关系数据库产品 1 Oracle 应用广泛 功能强大 xff0c 分布式数据库系统 关系 对象 型数据库 2 MySQL 快捷 可靠 开源 免费 与PHP组成经典的LAMP组合 3 SQLServer 针对不同用户群体的五个特殊的版本
  • 结构体定义寄存器方法(很流行哦)

    ARM寄存器数量之多 xff0c 叹为观止 xff01 幸运的是 xff0c 它都是以模块分布 xff0c 再依托C语言的模块化编程 xff0c 用户就没有必要记忆那么多的寄存器名称了 xff01 拿LPC1114来说 xff0c 单片机内
  • 代码函数调用关系图

    代码函数调用关系 Graphviz 43 CodeViz http www linuxidc com Linux 2015 01 111501 htmCallgraph xff1a 静态分析 C 程序函数调用关系图cflow 43 grap
  • Python元组(tuple),字符串,读取文件。

    目录 tuple xff1a tuple格式 xff1a tuple和列表的区别 xff1a 查询类型小方法 xff1a string 字符串 xff1a 字符串格式 xff1a 三种格式的区别 xff1a 1 单引号 xff0c 双引号换
  • 各种课程教学安排

  • 驱动测试时出现can't open 的一种情况

    提前声明 xff1a 本程序是使用class device create函数导致的错误 xff0c 如果不是使用该函数不要对号入座 xff0c 谢谢 在今天编写完驱动程序 xff0c 然后使用测试程序测试时 xff0c 却出现了can 39
  • Ubuntu 20.04上安装ROS

    文章目录 前言一 Ubuntu 20 041添加ROS源2更新软件源3配置及更换最佳软件源4安装ROS5初始化rosdep6设置环境变量7安装rosinstall8验证是否安装成功 总结 前言 在虚拟机VMware上安装了Ubuntu 20
  • 头文件只能放变量的声明但是不能放定义

    一般的做法都是在头文件 h 中声明变量 xff0c 然后在源文件 c 中定义变量 如果在头文件中定义变量 xff0c 这个变量就有了实体 xff0c 如果a c和b c一起引用了头文件head h xff0c 就等于同时创建了两个同样名字的
  • 使用策略模式优化大量if...else代码

    一 场景 假如我们有一个订单业务 xff0c 根据会员的类型不同 xff0c 使用if else判断 xff0c 然后去执行不同的业务操作 xff0c 伪代码如下 xff1a span class token keyword public
  • 操作系统笔记

    1 操作系统的特性 xff1a 并发性 共享性 异步性和虚拟性 2 特权指令与非特权指令 xff1a xff08 1 xff09 特权指令 只能在管态才能执行的指令为特权指令 这些指令一般只有操作系统才能执行 xff0c 而一般用户程序不能
  • 【计算机网络原理】根据IP地址和子网掩码计算网络地址

    背景 最近做计算机网络原理真题 xff0c 根据ip地址和子网掩码计算网络地址的过程总结一下 计算步骤 1 将IP地址 xff0c 子网掩码转换为二进制 2 之后将两个二进制进行与运算 xff0c 再将结果转为十进制 与 xff1a 相应二
  • C++学习笔记命名冲突和命名空间介绍

    C 43 43 命名冲突和命名空间介绍 假设您是第一次开车去朋友家 xff0c 给您的地址是 Mill City 的 245 Front Street 到达米尔城后 xff0c 您拿出地图 xff0c 却发现米尔城实际上有两条不同的前街 x
  • Docker的网络模式和如何跨主机通信(转载链接)

    https blog csdn net smooth00 article details 82842234 utm medium 61 distribute pc relevant t0 none task blog BlogCommend
  • java面试题2

    编程题 xff1a 1 xff0e 现在输入n个数字 xff0c 以逗号 xff0c 分开 xff1b 然后可选择升或者降序排序 xff1b 按提交键就在另一页面显示 按什么 排序 xff0c 结果为 xff0c xff0c 提供reset
  • 总线带宽 - 计算

    计算步骤 xff1a 1个时钟周期 61 1 总线时钟频率 xff1b 总线传输周期 61 1个时钟周期 总线周期包含时钟周期个数 xff1b 总线带宽 61 每个总线周期传送的数据 总线传输周期 xff1b 单位转化 xff1a 1MHz
  • centos7.5部署高可用k8s(一) ---- 部署LB负载均衡haproxy+keepalived

    在centos7 5系统部署一个k8s高可用集群 k8s版本采用v1 15 2 docker版本18 09 根据官方的文档 xff0c 部署集群前首先要部署负载均衡器 xff0c 这里简要记录下LB负载均衡器的部署过程 环境说明 节点IP备