nginx实现读写分离

测试环境

OS: rhel6

A服务器: 配置nginx实现负载均衡和方向代理功能

B服务器: 简单的web服务器,没做其他配置,读服务器

C服务器: 简单的web服务器,没做其他配置,写服务器

部署: A服务器实现前端负载均衡和方向代理功能,后端有两台web服务器,B服务器只进行读操作,C服务器只进行写操作,而B和C服务器之间通过rsync+inotify实现数据的同步这样就简单的实现了nginx的读写分离功能。

配置之前先来了解一下什么是WebDAV??

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

Web 分布式创作和版本管理 (WebDAV) 扩展了 HTTP/1.1 协议,允许客户端发布、锁定和管理 Web 上的资源。

1.在A服务器上配置负载均衡和方向代理功能

#vim /etc/nginx/nginx.conf

proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;####读服务器组  Bupstream read {       #ip_hash;       server 192.168.20.121 weight=2 max_fails=2 fail_timeout=2;       server 192.168.20.123 weight=2 max_fails=2 fail_timeout=2;    }####写服务器组  Aupstream write {         #ip_hash;       server 192.168.20.122 weight=2 max_fails=2 fail_timeout=2;       server 192.168.20.124 weight=2 max_fails=2 fail_timeout=2;       server 127.0.0.1:8080 backup;    }

server {       location / {            root   html;            index  index.html index.htm;            proxy_cache first;            proxy_cache_valid 200 10m;            proxy_pass  http://read;            if($request_method = "POST"){    ####在这里判断用户是否执行的是写操作                       proxy_pass http://write;            }             proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;       }}

2.A服务器上重新启动服务

#service nginx restart

3.在B,C服务器上开启httpd的WebDAV功能

#vim /etc/httpd/conf/httpd.conf

Dav on   ####在<Directory  "/var/www/html/">标签里添加

4.在B,C服务器上重启httpd服务

#service httpd retstart

5.在A服务器上用curl命令测试下是否能正常访问B,C服务器上的web服务

#curl  http://192.168.20.121

6.用curl命令的T参数实现http协议中的put方法上传文件 (A服务器)

#curl  -T  /etc/issue  http://192.168.20.121  ###往读服务器上传文件会报405的错误,因为没开启WebDAV功能

#curl  -T  /etc/issue  http://192.168.20.122  ###往写服务器上传文件会报403的错误,禁止访问权限不够

7.下面我们给apache用户授权

#setfacl -m u:apache:rwx /var/www/html/

8.最后再测试下看是否可以往写服务器上传文件

#curl  -T  /etc/issue  http://192.168.20.122

9.验证上传是否成功

#cd /var/www/html

时间: 2024-10-06 04:50:14

nginx实现读写分离的相关文章

nginx的读写分离

一般网站都是用rsync+inotify实现文件同步,而rsync+inotify并不能双向同步,所以这个时候我们就要使用到读写分离.拓扑:nginx:192.168.137.50:80          后端web:apache1:192.168.137.51:80                           apache2:192.168.137.52:80这里我们使用nginx作为反向代理,使用if语句和$request_method模块实现读写分离,配置如下: server {

Nginx之读写分离

1.实验拓扑 需求分析,前端一台nginx做负载均衡反向代理,后面两台httpd服务器.整个架构是提供BBS(论坛)服务,有一需求得实现读写分离,就是上传附件的功能,我们上传的附件只能上传到Web1,然后在Web1上利用rsync+inotify实现附件同步,大家都知道rsync+inotify只能是主向从同步,不能双向同步.所以Web1可进行写操作,而Web2只能进行读操作,这就带来读写分离的需求,下面我们就来说一下,读写分离怎么实现. 2.WebDAV功能说明 WebDAV (Web-bas

Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx之反向代理、日志格式、集群、缓存、压缩、URl 重写,读写分离配置

location的模式匹配按照优先级由低到高有以下四种: Nginx作为一个优秀的Web服务器,不仅在处理静态内容上比Apache优秀,还经常被用来做反向代理服务器,且支持缓存,URL重写,自定义格式,读写分离等功能,并且支持在TCP/IP第七层实现集群功能,基于AIO(异步I/O)event_driven(事件驱动)mmap(内存映射)等机制和功能,具有轻量级.高性能.消耗低.特性丰富.配置简单等特点 实验环境: node1:192.168.139.2 node2:192.168.139.4

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx反向代理 负载均衡 页面缓存 URL重写及读写分离

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

[转载]Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx反向代理、负载均衡、缓存、URL重写及读写分离

nginx.conf: main,worker_process.error_log.user.group: event{} 事件驱动相关 httpd{} 关于http相关的配置 server{} 虚拟主机 upstream NAME{}负载均衡模块 需定义在server之外 location URI{}  URI访问属性 location URI {}:               对当前路径及子路径下的所有对象都生效:            location = URI {}:        

基于nginx的TCP Proxy实现数据库读写分离

nginx非常早就支持tcp proxy.可是一直不知道其使用,近期在nginx blog上看见了.一些实践者将其运用到数据库訪问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲详细的搭建实现.仅仅是最一些理论上的设计猜想. 直接上图 db集群.分为读db和写db.写db向读db同步数据. 读db仅仅能读,写db仅仅能写.图中读写各一个,仅仅是一个样例,实际须要依据业务来配置读写server比例. nginx tcp proxy实现读写分离.提供仅仅读的port和仅仅写的port.