HAproxy

自动化运维工具Ansible之LNMP实践环境部署

时间秒杀一切 提交于 2020-08-06 04:11:16
Ansible-实战指南-LNMP环境部署,并使用zabbix监控 主机规划 系统初始化:必要的系统初始化 基础组件包括:zabbix监控,mariadb(用于存放zabbix监控信息) 业务组件包括:MySQL、memcached、nginx、PHP、haproxy、keepalived 添加用户账号 说明: 1、 运维人员使用的登录账号; 2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放; 3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。 1 # 使用一个专门的用户,避免直接使用root用户 2 # 添加用户、指定家目录并指定用户密码 3 # sudo提权 4 # 让其它普通用户可以进入该目录查看信息 5 useradd -u 1050 -d /app yun && echo ' 123456 ' | /usr/bin/ passwd -- stdin yun 6 echo " yun ALL=(ALL) NOPASSWD: ALL " >> /etc/ sudoers 7 chmod 755 /app/ 备注:记得在管理机 172.16.1.180 上实现对其他机器的免密登录。 Ansible 配置清单Inventory 1 [yun@ansi

Kubernetes Ingress简单入门

纵饮孤独 提交于 2020-08-05 10:46:51
本文转载自 Rancher Labs 不知道你是否注意到一个奇怪的现象,尽管Kubernetes Ingress API仍然处于beta状态,但是已经有许多公司使用它来暴露Kubernetes服务。从事相关项目的工程师表示,Kubernetes Ingress API越来越有可能摘下其beta标签。实际上,Kubernetes Ingress API处于beta状态已经持续了几年的时间,准确来说,是在2015年秋季开始进入该阶段的。但是,漫长的beta阶段可以让Kubernetes贡献者有时间来完善规范并使其与已经搭建好的实施软件(HAProxy、NGINX、Traefik等)保持一致,从而使API标准化以反映最常见并且有需求的功能。 随着该功能GA的临近,那么现在应该是一个合适的时机可以帮助新手快速了解Ingress的工作方式。简而言之,Ingress是一个规则,可以绘制出在集群内部的服务如何弥合鸿沟,暴露到客户可以使用它的外部世界。同时,称为Ingress controller的代理在集群网络的边缘进行侦听(监视要添加的规则),并将每个服务映射到特定的URL路径或域名以供公众使用。在Kubernetes维护者开发API的同时,其他开源项目也实现了Ingress Controller并为其代理添加了自己的独特功能。 在本文中,我将介绍这些概念

由VIP漂移引发的算法异常问题调查和解决

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-05 02:49:58
最近工作中的一个问题,耗时一个月之久终于调查完毕且顺利解决,顿时感慨万千。耗时之久和预期解决时间和环境搭建以及日志不合理等等有关,当然这个并非此文的重点。 之所以在很久以后的今天又开始写文,主要是这个问题调查的过程值得铭记。具体情况如下文述。 一、问题发现过程 数据告警服务提示相关分析结果缺失,经初步调查,发现分析服务在调用对应的NLP算法服务时出现大量Failed,遂查看算法日志,确实存在错误信息。 二、问题调查和解决 1.定位问题 1) 反馈给算法相关开发同学:他们认为可能是该算法遇到了长文本数据(超过3000字),由于分析时间超长,导致后续算法请求时出现阻塞而导致failed。 2) 根据开发的反馈,开始定位是否存在这样的长文本数据:通过分析日志和数据库查询确认后,并没有分析长文本数据,且出现异常时的文本数据均为短文本(小于200)。 3) 深入调查:该算法部署了多个节点,出现异常时,多个节点均出现了异常,因此可能是算法本身遇到了某个瓶颈问题。经确认,该算法使用了同一台GPU服务器上的tf-serveing服务。 4) 确认GPU服务器是否发生了异常情况:经确认,该服务器进行过VIP漂移操作。 5) 问题是否可以复现:测试环境中,对GPU服务器进行vip漂移操作,发现错误现象出现,问题可复现。 因此,问题的起因是GPU服务器进行了VIP漂移操作,导致算法出现异常。 2

kubeadm部署kubernetes v1.14.1高可用集群

回眸只為那壹抹淺笑 提交于 2020-08-04 11:31:03
高可用简介 kubernetes高可用部署参考: https://kubernetes.io/docs/setup/independent/high-availability/ https://github.com/kubernetes-sigs/kubespray https://github.com/wise2c-devops/breeze https://github.com/cookeem/kubeadm-ha 拓扑选择 配置高可用(HA)Kubernetes集群,有以下两种可选的etcd拓扑: 集群master节点与etcd节点共存,etcd也运行在控制平面节点上 使用外部etcd节点,etcd节点与master在不同节点上运行 堆叠的etcd拓扑 堆叠HA集群是这样的拓扑,其中etcd提供的分布式数据存储集群与由kubeamd管理的运行master组件的集群节点堆叠部署。 每个master节点运行kube-apiserver,kube-scheduler和kube-controller-manager的一个实例。kube-apiserver使用负载平衡器暴露给工作节点。 每个master节点创建一个本地etcd成员,该etcd成员仅与本节点kube-apiserver通信。这同样适用于本地kube-controller-manager 和kube-scheduler实例

非常强悍的 RabbitMQ 总结,细节写得真好

痴心易碎 提交于 2020-07-29 10:53:42
rabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。 AMQP协议 核心概念 server:又称broker,接受客户端连接,实现AMQP实体服务。 connection:连接和具体broker网络连接。 channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel表示一个会话任务。 message:消息,服务器和应用程序之间传递的数据,由properties和body组成。properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性;body是消息实体内容。 Virtual host:虚拟主机,用于逻辑隔离,最上层消息的路由。一个Virtual host可以若干个Exchange和Queue,同一个Virtual host不能有同名的Exchange或Queue。 Exchange:交换机,接受消息,根据路由键转发消息到绑定的队列上。 banding:Exchange和Queue之间的虚拟连接,binding中可以包括routing key routing key: 一个路由规则,虚拟机根据他来确定如何路由 一条消息。 Queue:消息队列,用来存放消息的队列。 Exchange 交换机的类型,direct、topic、fanout、headers

Nginx/Httpd反代tomcat配置

泪湿孤枕 提交于 2020-07-29 10:29:14
  在上一篇博客中,我们了解了tomcat的server.xml中各组件的用法和作用;其中对于tomcat连接器来说,它分三类,一类是http连接器,一类是https连接器,一类是ajp连接器;通常tomcat作为应用服务器,我们不建议也不应该让tomcat直接面向客户端提供服务;因此进入tomcat的访问就只有其他反代服务器的请求了;如果说tomcat使用其他反代服务器对外提供服务,那么对于https的访问就应该由代理服务器端来实现,从代理服务器到tomcat的访问,我们应该还是使用http或者ajp协议,综上所述常用的连接器也就http和ajp;http是一个文本格式协议,对于浏览器来说是支持的;ajp协议是二进制格式协议,对于浏览器是不支持的;所以对于反代服务器来讲,面向客户端它提供http协议访问,面向服务端它提供ajp协议去访问;这样去反代tomcat,相对要安全一点,至少客户端不能绕过代理直接访问tomcat;   常见的的反代服务器有haproxy、nginx、httpd,这三款软件中haproxy和nginx 可基于http协议来代理tomcat;httpd可基于http协议反代tomcat,也支持ajp协议反代tomcat,如果是ajp协议反代tomcat,在httpd上要启用一个proxy_ajp_module;   1、nginx反代tomcat  

一文了解HAProxy主要特性

夙愿已清 提交于 2020-07-29 08:25:03
本文转自 Rancher Labs 在Kubernetes中,Ingress对象定义了一些路由规则,这些规则规定如何将一个客户端请求路由到指定服务,该服务运行在你的集群中。这些规则可以考虑到输入的HTTP消息的独特方面,包括其Host请求头和URL路径,这将允许你在请求中使用数据发现将流量从一个服务发送到另一个服务。那意味着你能够使用Ingress对象来为许多不同的应用程序定义路由。 虽然Ingress对象定义路由,但Ingress Controller是驱动它们的引擎。Ingress Controller是一个位于客户端和服务之间的代理,其作用是正确地传递消息。目前市面上已经有几个项目实现了Ingress Controller规范,每个项目都有其优势。Rancher提供了一个基于NGINX的默认controller,但你并不需要局限于此。Rancher已经和HAProxy达成合作,因此你也可以选择使用HAProxy Ingress Controller。我们倾向于把HAProxy Ingress Controller看作是一个完美的Kubernetes的涡轮增压引擎,能够充分提升Kubernetes的使用效率。 HAProxy Ingress Controller的特性 你可以在Rancher应用商店中找到HAProxy,此外你还可以在HAProxy的官方文档(https:/

linux CentOS7 安装Haproxy,实现Tcp四层负载均衡

人盡茶涼 提交于 2020-07-28 10:19:37
跨区域部署业务时,为最小化部署,使用正向代理将请求转发到中心服务器,转发请求包括http 和 tcp。当然Haproxy也是可以做负载均衡的,尤其是在多TCP后端服务器部署下。 HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 服务器环境: CentOS Linux release 7.8 安装方式,yum安装,Root权限。 注意CentOS 8安装时会不一样 查找yum源中的haproxy: # yum list | grep haproxy haproxy.x86_64 1.5.18-9.el7 @base pcp-pmda-haproxy.x86_64 4.3.2-7.el7_8 updates 创建日志目录: # mkdir /var/log/haproxy # chmod a+w /var/log/haproxy 开启rsyslog记录haproxy日志: # vim /etc/rsyslog.conf # Provides UDP syslog reception $ModLoad imudp # $UDPServerRun 514 # haproxy log local0.* /var/log/haproxy/haproxy.log # 添加 修改 /etc

Haproxy+keepalived高可用集群实战

橙三吉。 提交于 2020-07-26 08:56:45
随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS、Haproxy、Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 Haproxy入门简介 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。负载均衡LVS是基于四层,新型的大型互联网公司也在采用Haproxy,了解了Haproxy大并发、七层应用等,Haproxy高性能负载均衡优点: HAProxy是支持虚拟主机的,可以工作在4、7层; 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作; 支持url检测后端的服务器; 它跟LVS一样,只是一款负载均衡软件,单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的; HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,HAProxy的支持多种算法。 》》点击这里免费领取:【阿里云】深入浅出Kubernetes项目实战手册(超详细127页)IT高薪训练营 Haproxy+Keepalived企业高性能WEB能够支持千万级并发网站,实现Haproxy高性能WEB网站架构配置步骤如下:

haproxy and large GET requests

旧城冷巷雨未停 提交于 2020-07-23 12:04:13
问题 I have a server that needs to receive large (64K) GET requests. It looks like haproxy (v 1.6) has a compile-time limit of 16K. I'm hoping I missed something. https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#3.2-tune.bufsize Any pointers other than recompiling haproxy? Somewhat related, any insight why haproxy would return 400 and not 414 in such a case? 回答1: I can provide an answer to the primary question. Despite the linked documentation, this appears not to be a compile-time