高可用负载均衡 haproxy+keepalived
服务器
20.0.0.206 10.0.0.206 bs-hk-hk01 高可用负载均衡节点 2c2g
20.0.0.207 10.0.0.207 bs-hk-hk02 高可用负载均衡节点 2c2g
软件版本
Keepalived 2.0.20
haproxy 2.1.2
Keepalived 安装配置
两个节点都安装 以bs-hk-hk01为例
#安装依赖包
[root@bs-hk-hk01 tools]#yum -y install gcc openssl-devel libnl3-devel pcre-devel
[root@bs-hk-hk01 tools]# ls
haproxy-2.1.2.tar.gz keepalived-2.0.20.tar.gz
[root@bs-hk-hk01 tools]# tar -zvxf keepalived-2.0.20.tar.gz
[root@bs-hk-hk01 keepalived-2.0.20]# ./configure --prefix=/usr/local/keepalived-2.0.20
[root@bs-hk-hk01 keepalived-2.0.20]# echo $?
0
[root@bs-hk-hk01 keepalived-2.0.20]# make && make install
[root@bs-hk-hk01 keepalived-2.0.20]# echo $?
0
#配置文件放在默认路径
[root@bs-hk-hk01 keepalived-2.0.20]# mkdir /etc/keepalived/
[root@bs-hk-hk01 keepalived-2.0.20]# cp /usr/local/keepalived-2.0.20/etc/keepalived/keepalived.conf /etc/keepalived/
#keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
[root@bs-hk-hk01 keepalived-2.0.20]# cp /usr/local/keepalived-2.0.20/etc/sysconfig/keepalived /etc/sysconfig/
[root@bs-hk-hk01 keepalived-2.0.20]# cp /tools/keepalived-2.0.20/keepalived/keepalived.service /etc/systemd/system/
# 将keepalived主程序加入到环境变量(安装目录下)
[root@bs-hk-hk01 keepalived-2.0.20]# ln -s /usr/local/keepalived-2.0.20/sbin/keepalived /usr/sbin/
#keepalived启动脚本,这个从keepalived源码目录复制,安装目录中没有
[root@bs-hk-hk01 keepalived-2.0.20]# cp /tools/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
[root@bs-hk-hk01 keepalived-2.0.20]# chmod 755 /etc/init.d/keepalived
[root@bs-hk-hk01 keepalived-2.0.20]# systemctl enable keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /etc/systemd/system/keepalived.service.
[root@bs-hk-hk01 keepalived-2.0.20]# mkdir /var/log/keepalived
[root@bs-hk-hk01 keepalived-2.0.20]# vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
[root@bs-hk-hk01 keepalived-2.0.20]# vim /etc/rsyslog.d/keepalived.conf
local0.* /var/log/keepalived/keepalived.log
#修改 /etc/rsyslog.conf 文件,添加如下:
[root@bs-hk-hk01 log]# diff /etc/rsyslog.conf{,.bak}
74c74
< local0.* /var/log/keepalived/keepalived.log
---
> [root@bs-hk-hk01 keepalived-2.0.20]# systemctl restart rsyslog
[root@bs-hk-hk01 keepalived-2.0.20]# systemctl start keepalived.service
[root@bs-hk-hk01 keepalived]# cp /lib/systemd/system/keepalived.service{,.bak}
[root@bs-hk-hk01 keepalived]# !vim
vim /lib/systemd/system/keepalived.service
[root@bs-hk-hk01 keepalived]# diff /lib/systemd/system/keepalived.service{,.bak}
10,11c10,11
< EnvironmentFile=/etc/sysconfig/keepalived
< ExecStart=/sbin/keepalived $KEEPALIVED_OPTIONS
---
> EnvironmentFile=-/usr/local/keepalived-2.0.20/etc/sysconfig/keepalived
> ExecStart=/usr/local/keepalived-2.0.20/sbin/keepalived $KEEPALIVED_OPTIONS
[root@bs-hk-hk01 keepalived]# systemctl daemon-reload
[root@bs-hk-hk01 keepalived]# systemctl restart keepalived.service keepalived 配置
#bs-hk-hk01
[root@bs-hk-hk01 keepalived]# cat keepalived.conf
! Configuration File for keepalived
! By zisefeizhu vrrp_script chk_haproxy_port {
script "/service/scripts/chk_hapro.sh"
interval 2
weight -5
fall 2
rise 1
} vrrp_instance kubernetes_master {
state MASTER
interface eth0
virtual_router_id 1
priority 150
advert_int 1
unicast_src_ip 20.0.0.206
unicast_peer {
20.0.0.207
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
20.0.0.250 dev eth0 label eth0:1
}
track_script {
chk_haproxy_port
}
} #bs-hk-hk02
[root@bs-hk-hk02 keepalived]# cp keepalived.conf{,.bak}
[root@bs-hk-hk01 keepalived]# scp keepalived.conf 20.0.0.207:/etc/keepalived/keepalived.conf
[root@bs-hk-hk02 keepalived]# cat keepalived.conf
! Configuration File for keepalived
! By zisefeizhu vrrp_script chk_haproxy_port {
script "/service/scripts/chk_hapro.sh"
interval 2
weight -5
fall 2
rise 1
} vrrp_instance kubernetes_master {
state BACKUP
interface eth0
virtual_router_id 1
priority 70
advert_int 1
unicast_src_ip 20.0.0.207
unicast_peer {
20.0.0.206
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
20.0.0.250 dev eth0 label eth0:1
}
track_script {
chk_haproxy_port
}
}
[root@bs-hk-hk02 keepalived]# systemctl restart keepalived.service 测试
[root@bs-hk-hk01 keepalived]# systemctl stop keepalived.service
[root@bs-hk-hk02 keepalived]# hostname -I
20.0.0.207 20.0.0.250 10.0.0.207
[root@bs-hk-hk01 keepalived]# systemctl restart keepalived.service
[root@bs-hk-hk01 keepalived]# hostname -I
20.0.0.206 20.0.0.250 10.0.0.206
[root@bs-hk-hk02 keepalived]# hostname -I
20.0.0.207 10.0.0.207
# systemctl enable keepalived.service Haproxy 安装配置
两个节点都安装 以bs-hk-hk01为例
[root@bs-hk-hk01 ~]# yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel bc systemd-devel bash-completion traceroute libtermcap-devel ncurses-devel libevent-devel readline-devel -y
#LUA编译安装及Systemd开发包
[root@bs-hk-hk01 ~]# cd /tools/
[root@bs-hk-hk01 tools]# curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
[root@bs-hk-hk01 tools]# ls
haproxy-2.1.2.tar.gz keepalived-2.0.20 keepalived-2.0.20.tar.gz lua-5.3.5.tar.gz
[root@bs-hk-hk01 tools]# tar -zxvf lua-5.3.5.tar.gz
[root@bs-hk-hk01 lua-5.3.5]# make linux
[root@bs-hk-hk01 lua-5.3.5]# echo $?
0
[root@bs-hk-hk01 lua-5.3.5]# make INSTALL_TOP=/usr/local/lua install
[root@bs-hk-hk01 lua-5.3.5]# echo $?
0
[root@bs-hk-hk01 lua-5.3.5]# yum install systemd-devel #安装haproxy
[root@bs-hk-hk01 lua-5.3.5]# cd ..
[root@bs-hk-hk01 tools]# ls
haproxy-2.1.2.tar.gz keepalived-2.0.20 keepalived-2.0.20.tar.gz lua-5.3.5 lua-5.3.5.tar.gz
[root@bs-hk-hk01 tools]# tar xf haproxy-2.1.2.tar.gz
[root@bs-hk-hk01 tools]# cd haproxy-2.1.2/
[root@bs-hk-hk01 haproxy-2.1.2]# make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_LUA=1 LUA_LIB=/usr/local/lua/lib/ LUA_INC=/usr/local/lua/include/ USE_PCRE=1 USE_SYSTEMD=1 PREFIX=/usr/local/haproxy
[root@bs-hk-hk01 haproxy-2.1.2]# make install PREFIX=/usr/local/haproxy
[root@bs-hk-hk01 haproxy-2.1.2]# cp haproxy /usr/sbin/
#准备启动脚本
[root@bs-hk-hk01 haproxy-2.1.2]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
#配置文件
[root@bs-hk-hk01 haproxy-2.1.2]# cd /etc/haproxy/
[root@bs-hk-hk01 log]# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
# By zisefeizhu
#---------------------------------------------------------------------
global
maxconn 10000
uid 99
gid 99
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
log 127.0.0.1 local3 info
#log 127.0.0.1 local1 notice #默认配置
defaults
log global
mode http
#option http-keep-alive
option httpclose
option forwardfor
option abortonclose
maxconn 10000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
balance leastconn #统计页面配置
listen stats
bind 0.0.0.0:9999
mode http
option httplog
maxconn 10
stats refresh 30s
stats enable
log global
stats uri /haproxy-status
stats realm zisefeizhu\ Haproxy
stats auth admin:zisefeizhu
stats hide-version #K8S-API-Server
frontend K8S_API
bind *:8443
mode tcp
default_backend k8s_api_nodes_6443 backend k8s_api_nodes_6443
mode tcp
balance leastconn
server 20.0.0.200 20.0.0.200:6443 check inter 2000 fall 3 rise 5
server 20.0.0.201 20.0.0.201:6443 check inter 2000 fall 3 rise 5
server 20.0.0.202 20.0.0.202:6443 check inter 2000 fall 3 rise 5 [root@bs-hk-hk01 haproxy]# mkdir /var/lib/haproxy
[root@bs-hk-hk01 haproxy]# chown 99.99 /var/lib/haproxy/ -R
[root@bs-hk-hk01 haproxy]# vim /etc/rsyslog.conf
# 对如下两行取消注释
$ModLoad imudp
$UDPServerRun 514
# 在末尾添加如下行
local3.* /var/log/haproxy/haproxy.log
*.info;mail.none;authpriv.none;cron.none;local0.none;local3.none
[root@bs-hk-hk01 log]# systemctl restart rsyslog
[root@bs-hk-hk01 log]# systemctl enable haproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@bs-hk-hk01 haproxy]# systemctl start haproxy.service 设置服务启动顺序及依赖关系
[root@bs-hk-hk01 keepalived]# diff /usr/lib/systemd/system/keepalived.service{,.bak02}
3c3
< After=network-online.target syslog.target haproxy.service
---
> After=network-online.target syslog.target
5d4
< Requires=haproxy.service
[root@bs-hk-hk01 keepalived]# scp /usr/lib/systemd/system/keepalived.service 20.0.0.207:/usr/lib/systemd/system/keepalived.service 检查脚本
[root@bs-hk-hk01 keepalived]# mkdir /service/scripts -p
[root@bs-hk-hk01 keepalived]# vim /service/scripts/chk_hapro.sh
##########################################################################
#Author: zisefeizhu
#QQ: 2********0
#Date: 2020-02-02
#FileName: /service/scripts/chk_hapro.sh
#URL: https://www.cnblogs.com/zisefeizhu/
#Description: The test script
#Copyright (C): 2020 All rights reserved
##########################################################################
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export $PATH
counts=$(ps -ef|grep -w "haproxy"|grep -v grep|wc -l)
if [ "${counts}" = "0" ]; then
systemctl restart keepalived.service
sleep 2
counts=$(ps -ef|grep -w "haproxy"|grep -v grep|wc -l)
if [ "${counts}" = "0" ]; then
systemctl stop keepalived.service
fi
fi 查看日志
[root@bs-hk-hk01 log]# tree keepalived/ haproxy/
keepalived/
└── keepalived.log
haproxy/
└── haproxy.log 0 directories, 2 files 完成!
高可用负载均衡 haproxy+keepalived的更多相关文章
- Linux集群之高可用负载均衡lvs+keepalived
LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LV ...
- haproxy+keepalived实现高可用负载均衡
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...
- Haproxy+Keepalived搭建Weblogic高可用负载均衡集群
配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G 系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...
- 案例一(haproxy+keepalived高可用负载均衡系统)【转】
1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...
- 基于HAProxy+Keepalived高可用负载均衡web服务的搭建
一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...
- haproxy+keepalived实现高可用负载均衡(转)
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. ...
- Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡
周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...
- HAProxy+Keepalived 高可用负载均衡
转自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy实现高可用负载均衡 Master backup vip(虚拟IP) 192.16 ...
- HAProxy & Keepalived L4-L7 高可用负载均衡解决方案
目录 文章目录 目录 HAProxy 负载均衡器 应用特性 性能优势 会话保持 健康检查 配置文件 负载均衡策略 ACL 规则 Web 监控平台 Keepalived 虚拟路由器 核心组件 VRRP ...
随机推荐
- react hooks & component will unmount & useEffect & clear up
react hooks & component will unmount & useEffect & clear up useEffect & return === u ...
- ip & 0.0.0.0 & 127.0.0.1 & localhost
ip & 0.0.0.0 & 127.0.0.1 7 localhost host https://www.howtogeek.com/225487/what-is-the-diffe ...
- .net core 和 WPF 开发升讯威在线客服系统:怎样实现拔网线也不丢消息的高可靠通信(附视频)
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- 02_Mysql用户管理之Navicat下载及安装
Navicat可以说是最好的Mysql客户端管理软件了,本博客将带你完成Navicat的下载与安装. 1.下载(https://www.navicat.com.cn/products)
- 深入理解Java内存模型JMM
本文转载自深入理解Java内存模型JMM JMM基础与happens-before 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执 ...
- Spark在处理数据的时候,会将数据都加载到内存再做处理吗?
对于Spark的初学者,往往会有一个疑问:Spark(如SparkRDD.SparkSQL)在处理数据的时候,会将数据都加载到内存再做处理吗? 很显然,答案是否定的! 对该问题产生疑问的根源还是对Sp ...
- 小记一下递归通过id寻找一条链路的数据
Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.sp ...
- 微信小程序:优化页面要渲染的属性
问题:页面中只用到四个属性:goods_name,goods_price,goods_introduce,pics,但是整个对象中有22个属性,小程序中建议:data中只存放标签中要使用的数据,而现在 ...
- 微信小程序:列表渲染
wx:for,(wx:for-item,wx:for-index),wx:key. 列表循环包括数组循环和对象循环 一.数组循环 此时控制台报错如下:属性"wx:key"可以提高性 ...
- javaMail (java代码发送邮件)
第一在邮件账户设置开启以下两个 需要发送短信获取 授权码. 代码如下: package com.hjb.javaMail; import javax.mail.*; import javax.mai ...