Fork me on GitHub
Maxie's Notes

No one can escape


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索
close
Maxie's Notes

HAProxy+Varnish动静分离WordPress配置详解 version2.0

发表于 2017-07-12 | 分类于 linux进阶 , HAProxy , Varnish | 热度 ℃
本次的实验拓扑图如下,这次主要是在上一篇的基础上精简一些,找出一些常见的错误,少走一些弯路
如果大佬们有更好的配置,请在留言区留言,或者加本人微信: mcy958623
请大佬们多多鞭策!!!

此次的实验目标

1
2
3
4
5
6
7
8
(1) 动静分离部署wordpress,动静都要能实现负载均衡,要注意会话的问题
(2) 在haproxy和后端主机之间添加varnish进行缓存
只缓存静态,对于动态直接调度至后端主机
(3) haproxy的设定要求:
(a) stats page,要求仅能通过本地访问使用管理接口;
(b) 动静分离
(c) 分别考虑不同的服务器组的调度算法
(4) haproxy高可用(Keepalived)
阅读全文 »
Maxie's Notes

Ansible自动化运维工具的基本使用以及部署

发表于 2017-07-07 | 分类于 linux进阶 , ansible | 热度 ℃

Ansible在我们运维工作中的主要工作就是帮助我们批量自动化部署一些生产上的需求。
由于Ansible是用Python开发的,是一款非常轻量级的自动化部署工具。
而且Ansible是通过SSH协议来进行管理其他机器的,我们只需要在安装Ansible的主机上编写一个SSH无密钥登陆的脚本,即可实现批量管理机器的工作。

其实自动化运维工具还有很多,比如puppet、saltstack、chef、cfengine,这些都可以说是Ansible的前辈了。但是为什么现在大多数运维岗位的在职人员都使用的是Ansible这款工具呢?
下面就来说一说它的优点:

1
2
3
4
5
6
7
1. Agentless:去中心化。也就是使用Ansible无需安装服务端和客户端,只需使用SSH即可。只要一台机器安装了Ansible程序,都是一台强大的管理端。
2. Stupied Simple:"傻瓜般的简单"。意味着上手非常简单,学习曲线平滑
3. SSH By Default:默认通过SSH连接通信,非常安全。无需安装客户端
4. YAML No Code:使用YAML语言定制剧本 --> playbook
5. sudo:支持sudo
6. 模块化:调用特定模块,完成特定任务,支持自定义模块
7. 幂等性:同一个命令/文件 可以被执行多次

阅读全文 »
Maxie's Notes

MySQL练习题

发表于 2017-07-05 | 分类于 linux进阶 , mysql | 热度 ℃

这章节,我们对之前所学的MySQL进行一些练习,使用的模板是网络上使用的hellodb.sql

hellodb.sql下载地址

不过需要注意的是,这个模板过于老旧,现在我们使用的MySQL/MariaDB的默认存储引擎都是InnoDB存储引擎,而模板中使用的则是MyISAM,所以我们需要手动进行修改:

1
$ sed -i 's@ENGINE=MyISAM@ENGINE=InnoDB@g' hellodb.sql

实验环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ yum info mariadb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
Name : mariadb
Arch : x86_64
Epoch : 1
Version : 5.5.44
Release : 2.el7.centos
Size : 48 M
Repo : installed
From repo : anaconda
Summary : A community developed branch of MySQL
URL : http://mariadb.org
License : GPLv2 with exceptions and LGPLv2 and BSD
Description : MariaDB is a community developed branch of MySQL.
: MariaDB is a multi-user, multi-threaded SQL database server.
: It is a client/server implementation consisting of a server daemon
: (mysqld) and many different client programs and libraries. The
: base package contains the standard MariaDB/MySQL client programs
: and generic MySQL files.

这次我们使用的是MariaDB 5.5.44

将hellodb.sql导入至数据库中:

1
$ mysql -proot@123 < hellodb.sql

阅读全文 »
Maxie's Notes

HAProxy+Varnish动静分离部署WordPress

发表于 2017-07-03 | 分类于 linux进阶 , HAProxy , Varnish | 热度 ℃
这章节,我们继续介绍HAProxy
不过这次我们将介绍如何使用HAProxy+Varnish实现WordPress的动静分离

由于实验的宿主机内存有限,这里我们就不按照拓扑图上的双varnish和图片服务器


阅读全文 »
Maxie's Notes

Tomcat实现会话保持功能

发表于 2017-07-03 | 分类于 linux进阶 , tomcat , session | 热度 ℃

上一节我们简单的介绍了如何使用Tomcat作为动态Web服务器
以及使用nginx/httpd服务器反向代理Tomcat和负载均衡Tomcat

在这一章节,我们将介绍如何使用Tomcat自带的Clustering/Session Replication实现会话保持功能
以及使用memcached对Tomcat实现session server功能

实验之前的准备

准备虚拟机

为了能正常的实现我们这里准备的3个实验,计划准备五台虚拟机

1
2
3
4
5
Director 172.16.3.10/16
Tomcat-1 172.16.3.20/16
Tomcat-2 172.16.3.50/16
Memcached-1 172.16.3.60/16
Memcached-2 172.16.3.70/16

建议每台Tomcat的内存分配的尽可能大一些,建议4GB

同步时间

在操作多台机器实现一个功能/目标时,需要将其时间同步

1
$ ntpdate 172.16.0.1

制作网络拓扑图


阅读全文 »
Maxie's Notes

HAProxy用法详解

发表于 2017-07-01 | 分类于 linux进阶 , HAProxy | 热度 ℃

HAProxy是一款高可用性、负载均衡基于TCP(四层)和HTTP(七层)应用的代理软件,支持虚拟主机。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。
并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

HAProxy性能

  • 单进程、事件驱动模型显著降低了上下文切换的开销及内存占用
  • O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测
  • 在任何可用的情况下,单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作,这会节约大量的CPU时钟周期及内存带宽

相比其他负载均衡调度器,优点有:

  1. HAProxy是支持虚拟主机的,通过frontend指令来实现
  2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
  3. 支持url检测后端的服务器
  4. 它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
  5. HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS。
  6. 能对请求的url和header中的信息做匹配,有比lvs有更好的7层实现

配置中两大配置段、五部分配置

两大配置段

1
2
global 全局配置段,进程级安全配置相关的参数,性能调整相关参数,Debug参数
proxies 代理配置段,如"defaults","frontend","backend"

proxie配置段中的五部分配置

1
2
3
4
defaults 为frontend、listen、backend提供默认配置
frontend 前端配置,相当于nginx中的 server段
backend 后端配置,相当于nginx中的 upstream段
listen frontend和backend的组合体

时间格式

1
2
3
4
5
6
us: 微秒(microseconds),即1/1000000秒;
ms: 毫秒(milliseconds),即1/1000秒;
s: 秒(seconds);
m: 分钟(minutes);
h:小时(hours);
d: 天(days);

阅读全文 »
Maxie's Notes

tomcat从入门到进阶

发表于 2017-07-01 | 分类于 linux进阶 , tomcat | 热度 ℃
Tomat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器。由于Tomcat本身也包含了一个HTTP服务器,它可以被视作一个单独的WEB服务器。不过HTTP服务器是C语言实现的Web服务器,而Tomcat则是由Java编写。

什么是Servlet呢? Servlet,全称 Java Servlet,是用Java编写的服务器端程序,主要功能在于交互式的浏览和修改数据,生成动态Web内容。

JSP代码运行过程

index.jsp –> 由jasper转换 –> index_jsp.java –> 通过javac编译器 –> 生成类文件 index_jsp.class –> 在(engine上)jvm虚拟机上运行
基于jsp将静态输出的数据转为java代码进行输出,结果为Servlet规范的代码

Java代码运行过程

.java –> javac –> .class(bytecode字节码)

JVM运行时区域

1
2
3
4
5
方法区 用于存储被JVM加载的class信息、常量、静态变量,方法等
堆 是jvm所管理的内存中占用空间最大的一部分,也是GC管理的主要区域,用来存储对象信息
栈 线程私有,存储线程自己的局部变量
PC寄存器 线程私有的内存空间,程序的指令指针
GC 垃圾回收,回收堆中不再使用的空间

阅读全文 »
Maxie's Notes

高性能缓存服务器Varnish详解

发表于 2017-06-27 | 分类于 linux进阶 , Varnish | 热度 ℃

Varnish是反向HTTP代理,也是HTTP加速器或者Web加速器。
Varnish不仅仅是缓存内容以加速器服务器的反向HTTP代理。根据实际情况,Varnish也可以用作:

Web应用程序防火墙
DDoS攻击防御器
负载均衡器
HTTP路由器

Varnish的优势:

Varnish的稳定性很高,与Squid相比,在运行在相同负荷的情况下,Squid服务器发生故障的几率要高于Varnish。
Varnish的访问速度更快,因为所有缓存数据都可以直接从内存读取,也可以从硬盘读取;比Squid更为灵活、
Varnish支持更多的并发连接。只需要调整thread_pools与thread_pool_max的值即可,不过要根据实际情况的CPU核心数以及服务器要被用来做什么而定。


Varnish的劣势:

一旦Varnish遇到Crash或者重启进程,所有的缓存数据都会从内存中完全释放,此时所有的访问都不会被缓存命中,而请求都会被发送到后端服务器,在高并发的情况下,后端服务器很可能因此崩溃掉。


解决方案:

在访问量很大的情况下,我们可以使用Varnish的内存缓存方式,而且后端要配置多台Squid服务器。防止前端Varnish服务重启、服务器重启或者不可预知的误操作情况下,大量请求穿透Varnish,这样Squid可以充当第二层缓存。
也可以通过Keepalived+varnish+rsync+inotify达到高可用的状态,这样在主节点不繁忙的时候,将缓存的信息同步到另一台备用缓存服务器上。为了尽可能的利用资源,我们可以将两台varnish配置成”双主模式”


阅读全文 »
Maxie's Notes

Keepalived+Nginx/LVS实现Web站点高可用

发表于 2017-06-24 | 分类于 Nginx , LVS , linux进阶 | 热度 ℃

当公司需要实现内部Web网站对外提供服务时,为了提高用户体验,要尽可能的保证Web站点的可用性。这时,我们就需要对Web系统做高可用(High Availability),计划使用两台Nginx做HA,通过使用keepalived工具达到我们的目的。

但是解决办法不只有Nginx+Keepalived,也可以使用LVS+Keealived,不过在中小型以及不是特别大型的企业,是基本没有使用LVS做负载均衡的,这里我们只做简单的介绍。

在之前的章节,我们已经说过如何对Nginx配置反向代理以及负载均衡的配置,这里就不过多介绍了。

1. Keepalived介绍

Keepalived是一个基于vrrp协议来实现的服务器高可用解决方案,可以利用其实现避免IP单点故障,类似的工具还有heartbeat、corosync。不过其不会单独出现,而是搭配着 LVS、Nginx、HAproxy,一起协同工作达到高可用的目的。

1.1 VRRP协议

VRRP全称Vritual Router Redundancy Protocol,虚拟路由冗余协议。通过把几台提供路由功能的设备组成一个虚拟路由设备,使用一定的机制保证虚拟路由的高可用,从而达到保持业务的连续性与可靠性。

在这组成的一个虚拟路由器中,有master和backup之分。master是主节点,在一个虚拟路由器中,只能有一个master,但可以有多个backup;backup是备用节点,也就是当master挂掉之后,backup接手master节点的所有资源,当有多个backup节点时,根据其priority(优先级)的值的大小,来选择谁作为master的替代者。当backup节点的优先级值相同时,根据其IP地址的大小,来决定。

1.2 VRRP工作逻辑


阅读全文 »
Maxie's Notes

LVS从入门到进阶

发表于 2017-06-22 | 分类于 LVS | 热度 ℃

一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。
负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,
客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。

客户程序不受服务器集群的影响不需作任何修改。
系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。
由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。

在1998年5月,章博士成立了Linux Virtual Server的自由软件项目,进行Linux服务器集群的开发工作。同时,Linux Virtual Server项目是国内最早出现的自由软件项目之一。

Linux Virtual Server项目的目标 :使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。


阅读全文 »
123…7
阿蓝

阿蓝

没有人可以回到过去重新开始, 但谁都可以从现在开始, 书写一个全然不同的结局!

68 日志
31 分类
83 标签
RSS
友链
  • 蓝泽希
  • 马哥Linux
  • LeeSsangZ
  • Maxiecloud
  • 朱双印
© 2013 - 2018 阿蓝
博客全站共161.8k字