Nginx服务器开箱体验,memcached缓存代理

by admin on 2019年9月6日

bf88必发唯一官网 1Profile

bf88必发唯一官网 2Profile

bf88必发唯一官网 3profile

前言

本文内容脑图如下:

正文内容脑图如下:

Nginx是高品质的轻量级WEB服务器,由于其提供HTTP代理和反向代理、负载均衡、缓存等一密密麻麻重要特征,进而遍及应用于今后的WEB服务内部,学习其很有至关重要。作者也是从贰个初大方初步上学并记下,希望继续慢慢深刻。

twemproxy是twitter开辟的二个redis代理proxy,Twemproxy能够把多台redis
server当作一台使用,开采职员通过twemproxy访谈这么些redis servers
的时候不要关心到底去哪一台redis
server读取k-v数据可能把k-v数据更新到数量汇总,也消除了多台服务器中redis分享的标题。假如依据redis的master-slave
replication,能确定保障在其他一台redis不可能做事情形下,仍旧可以保险能够存在一个任何的多少集。

bf88必发唯一官网 4正文内容脑图

bf88必发唯一官网 5正文内容脑图

对了,为何不用Docker来运维Nginx呢?因为不想啊!

Twemproxy有什么用途呢?它能够:

作品共 533字,阅读大致供给 2秒钟 !

作品共 747字,阅读大致需求 2分钟 !

注: 本文原载于 My Personal Blog:CodeSheep · 程序羊

  • 经过代理的方法裁减缓存服务器的连接数
  • 电动在多台缓存服务器间分享数据
  • 因而分裂的宗旨与散列函数扶助一致性散列
  • 透过安插的艺术禁用失利的结点
  • 运作在多少个实例上,客商端能够三番两次到第八个可用的代理服务器
  • Nginx服务器开箱体验,memcached缓存代理。帮衬央浼的流式与批管理,因而能够裁减来回的消耗

twemproxy(nutcracker) 是 Facebook开源的轻量级 memcached / redis
代理服务器,本质正是贰个集群管理工科具,首要用来弥补 Redis和
Memcached对集群管理的欠缺,其成功的最大进献就是经过在后端减弱同缓存服务器的连接数从而扩张吞吐量。咱们将
Twemproxy看成一个老四弟,背后 Carry着一批 memcached /
redis实例大哥,如此看来,某一主次上也近乎于 memcached / redis 的HA。

bf88必发唯一官网 ,近期学
Elasticsearch,既然学之,怎么能未有实际的集群来把玩呢,由此自身必需起头搭三个!

  • CentOS 7.4 64Bit
  • Nginx 1.14.0 稳定版

上边介绍一下twemproxy的安装和配备:

本文先进行一波让 twemproxy 来 Carry一批 memcached四哥时的做事处境。

注: 本文首发于 My Personal Blog:CodeSheep·程序羊,接待光临
小站

1、安装twemproxy前须求先安装m4、autoconf、automake、libtool、gcc,不然会报各类错

Nginx服务器开箱体验,memcached缓存代理。注: 本文首发于 My Personal Blog:CodeSheep·程序羊,招待光临
小站

  • 节点希图
wget http://nginx.org/download/nginx-1.14.0.tar.gz

安装m4

预备三台节点:

本文策画搭建 双节点 Elasticsearch集群,由此这里企图了两台 Linux
CentOS 7.4 64bit
机器:

  • 安装第三方库
wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
&& tar -xzvf m4-1.4.13.tar.gz
&& cd m4-1.4.13
&& ./configure –prefix=/usr/local 
make && make install
节点 OS 角色
192.168.199.77 CentOS 7.4 部署 memcached1实例
192.168.199.78 CentOS 7.4 部署 memcached2实例
192.168.199.79 CentOS 7.4 部署 twemproxy代理服务器
  • 节点1:192.168.31.8
  • 节点2:192.168.31.9

安装autoconf、automake、libtool、gcc

  • 安装
  • Elasticsearch 安装包计划
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-develyum -y install pcre-devel
yum -y install autoconf automake libtool gcc 

这里下载的是终止到当下日子的新颖版:6.4.2

设置成功将来能够查阅pcre版本: pcre-config —version

2、安装twemproxy

yum install memcached
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz

bf88必发唯一官网 6查看pcre版本

git clone https://github.com/twitter/twemproxy.git
autoreconf -fvi #生成configure文件
.configure
make && make install
  • 作为后台服务运维之
  • 安装目录盘算
  • 解压安装包

 

那边拟将 Elasticsearch安装在 /opt/elasticsearch 目录下:

3、编辑配置文件

memcached -u root -p 11211 -m 64m -d
mkdir /opt/elasticsearch将压缩包复制到该目录下并解压
tar zxvf nginx-1.14.0.tar.gz

vim conf/nutcracker.yml  

  • 安装 m4工具

亟需修改三个节点上的计划文件 elasticsearch.yml

  • 从configure脚本自动生成Makefile
alpha:
 listen: 127.0.0.1:22121 #监听端口
 hash: fnv1a_64  #key值hash算法,默认fnv1a_64
 distribution: ketama  #分布算法 
#ketama一致性hash算法;modula非常简单,就是根据key值的hash值取模;random随机分布
 auto_eject_hosts: true  #摘除后端故障节点 
 redis: true   #是否是redis缓存,默认是false
 timeout: 400   #代理与后端超时时间,毫秒
 server_retry_timeout: 200000 #摘除故障节点后重新连接的时间,毫秒
 server_failure_limit: 1  #故障多少次摘除
 servers:
 - 172.16.175.145:6379:1 
 - 172.16.175.122:6379:1

  • 节点1 配置

4、改动redis配置文件

wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gztar -zvxf m4-1.4.9.tar.gzcd m4-1.4.9./configuremakemake install

cd /root/nginx-1.14.0./configure --prefix=/usr/local/webserver/nginx

redis监听的ip和端口要与twemproxy对应(因为本身只是在中间的一台机器上装了twemproxy,借使两台都装的话能够毫无改)

  • 安装 autoconf 工具
cluster.name: codesheep # 集群名称node.name: sheep1 # 节点名network.host: 192.168.31.8 # 绑定的节点1地址network.bind_host: 0.0.0.0 # 此项不设置你试试本机可能访问不了啊discovery.zen.ping.unicast.hosts: ["192.168.31.8","192.168.31.9"] # hosts列表discovery.zen.minimum_master_nodes: 1 ## 如下配置是为了解决 Elasticsearch可视化工具 dejavu的跨域问题!若不用可视化工具则可省略之http.port: 9200http.cors.allow-origin: "http://192.168.199.76:1358"http.cors.enabled: truehttp.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorizationhttp.cors.allow-credentials: true

这里的 —prefix
选项是点名Nginx的安装路线,这里作者是内定安装到路线:/usr/local/webserver/nginx

分级改变两台服务器redis.conf中的bind选项,将127.0.0.1改为本例中的172.16.175.145和172.16.175.122

  • 节点2 配置
  • 编写翻译安装

5、开启twemproxy

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gztar zxvf autoconf-2.69.tar.gzcd autoconf-2.69./configure --prefix=/usr/make && make install

nutcracker -t -c /twemproxy/conf/nutcracker.yml 
#测试配置文件 如果不加-c 默认是检测conf/nutcracker.yml


nutcracker -d -c /twemproxy/conf/nutcracker.yml -p -o /data/logs/twemproxy/redisproxy.log 
#启动并将日志记录到/data/logs/twemproxy/redisproxy.log
  • 安装 twemproxy代理
cluster.name: codesheep # 集群名称node.name: sheep1 # 节点名network.host: 192.168.31.9 # 绑定的节点2地址network.bind_host: 0.0.0.0 discovery.zen.ping.unicast.hosts: ["192.168.31.8","192.168.31.9"] # hosts列表discovery.zen.minimum_master_nodes: 1 ## 如下配置是为了解决 Elasticsearch可视化工具 dejavu的跨域问题!若不用可视化工具则可省略之http.port: 9200http.cors.allow-origin: "http://192.168.199.76:1358"http.cors.enabled: truehttp.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorizationhttp.cors.allow-credentials: true
cd /root/nginx-1.14.0make && make install

6、将项目中的redis连接改为twemproxy的ip和端口

  • 创造客商及客户组

编写翻译安装进度如下,直到实现

自个儿项目采纳的是laravel,只需将.env中的REDIS_HOST和REDIS_PORT设置方面的为127.0.0.1和22121

wget https://github.com/twitter/twemproxy/archive/master.zipunzip master.zipmv twemproxy-master twemproxymv twemproxy /usr/local/cd /usr/local/cd twemproxy/autoreconf -fvi./configure --enable-debug=fullmakemake install

是因为 Elasticsearch不能以 root顾客运营,由此必要增添非 root顾客:

bf88必发唯一官网 7编写翻译安装进程如下

静心,还亟需将config文件夹下的database.php中的redis配置里的 ‘database’
=> 0注释掉,predis 对那一个布局私下认可实行 select 操作,会招致连日错误。

  • 查看 twemproxy帮助
groupadd esuseradd es -g eschown -R es:es ./elasticsearch-6.4.2
  • 查看Nginx版本

bf88必发唯一官网 8 

  • 关门防火墙

做一下redis的读写测验,不出意外的话,twemproxy就足以健康使用啊!

nutcracker -h

[root@localhost ~]# nutcracker -hThis is nutcracker-0.4.1Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file] [-c conf file] [-s stats port] [-a stats addr] [-i stats interval] [-p pid file] [-m mbuf size]Options: -h, --help : this help -V, --version : show version and exit -t, --test-conf : test configuration for syntax errors and exit -d, --daemonize : run as a daemon -D, --describe-stats : print stats description and exit -v, --verbose=N : set logging level (default: 5, min: 0, max: 11) -o, --output=S : set logging file (default: stderr) -c, --conf-file=S : set configuration file (default: conf/nutcracker.yml) -s, --stats-port=N : set stats monitoring port (default: 22222) -a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0) -i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec) -p, --pid-file=S : set pid file (default: off) -m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)

/usr/local/webserver/nginx/sbin/nginx -v

总结

  • 预备 twemproxy配置文件
systemctl stop firewalldsystemctl disable firewalld

bf88必发唯一官网 9查看Nginx版本

上述正是那篇小说的全体内容了,希望本文的内容对咱们的读书只怕办事有着一定的参照学习价值,借使有疑难大家能够留言交换,谢谢大家对台本之家的支撑。

  • 切换客户
  • 翻开安装后的目录

你也许感兴趣的篇章:

  • PHP的Laravel框架结合MySQL与Redis数据库的选拔安插
  • Redis在Laravel项目中的应用实例详解
  • Laravel框架完毕redis集群的艺术深入分析
  • 至于 Laravel Redis
    四个经过同期取队列难点详解
  • laravel使用Redis达成网址缓存读取的点子详解
  • Laravel如何运用Redis分享Session
  • Laravel框架数据库CU奇骏D操作、连贯操作总计
  • PHP开辟框架Laravel数据库操作方法计算
  • Laravel框架使用Redis的法子详解
vim /usr/local/twemproxy/conf/nutcracker.yml

一共八个目录:confhtmllogssbin

修改配置文件 nutcracker.yml

su es

bf88必发唯一官网 10查看安装后的目录

memcached: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama timeout: 400 backlog: 1024 preconnect: true auto_eject_hosts: true server_retry_timeout: 30000 server_failure_limit: 3 servers: - 192.168.199.77:11211:1 - 192.168.199.78:11211:1
  • 分别在 节点1和 节点2上启动ES服务
/usr/local/webserver/nginx/sbin/nginx
  • 启动 tewmproxy服务

浏览器访谈Nginx成功(注意:由于自家的电话上80端口被挤占了,由此作者将Nginx起在81端口上了):

cd bin./elasticsearch // 若要后台启动,则加-d参数

bf88必发唯一官网 11浏览器访谈成功

nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml
  • 浏览器访问: 查看运行作用
  • 测量检验nginx测验文件是不是科学
  • 反省运转状态

bf88必发唯一官网 12早前后相继浏览器访谈效果

  • 指令行查看集群消息
/usr/local/webserver/nginx/sbin/nginx -t
[root@localhost ~]# netstat -nltp | grep nutcrackertcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 12737/nutcracker tcp 0 0 192.168.199.79:22121 0.0.0.0:* LISTEN 12737/nutcracker

bf88必发唯一官网 13image.png

  • 点名安排文件运行
  • 率先通过 twemproxy代理来写缓存
  • 接纳可视化学工业具 dejavu查看集群新闻

一连存入了 6个key

有关 Elasticsearch集群可视化管理工科具的左臂,能够参谋作者的前文:《一文上手
Elasticsearch常用可视化管理工科具》

/usr/local/webserver/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key1 0 0 11STOREDset key2 0 0 12STOREDset key3 0 0 13STOREDset key4 0 0 14STOREDset key5 0 0 15STOREDset key6 0 0 16STORED

bf88必发唯一官网 14可视化学工业具dejavu查看集群音讯

  • 重启nginx
  • 翻看开掘持有缓存都写到了 memcached第22中学
  • 接下去插入两条数据

/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件/usr/local/webserver/nginx/sbin/nginx -s reopen #重启 Nginx
[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key1VALUE key1 0 11ENDget key2 VALUE key2 0 12ENDget key3VALUE key3 0 13ENDget key4VALUE key4 0 14ENDget key5VALUE key5 0 15ENDget key6VALUE key6 0 16END
curl -X PUT 'localhost:9200/accounts/person/1' -d '{ "user": "张三", "title": "工程师", "desc": "数据库管理"}' curl -X PUT 'localhost:9200/accounts/person/1' -d '{ "user": "赵四", "title": "设计师", "desc": "UI设计"}' 
  • 停止nginx
  • 接下去断开 memcached2
  • 查看数据的入库效果

bf88必发唯一官网 15数据入库效果

/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
[root@localhost ~]# ps -aux | grep memroot 634 0.0 0.0 326588 1960 ? Ssl 15:58 0:00 memcached -u root -p 11211 -m 64m -droot 704 0.0 0.0 112676 984 pts/0 S+ 16:01 0:00 grep --color=auto mem[root@localhost ~]# kill -9 634

OK,索引 / 类型 / 文档 一望而知!

预备布置文件 nginx.conf 如下:

  • 继续透过 twemproxy代理来写缓存

若在 Elasticsearch集群 安装/启动 进度 中有任何奇葩 问题/错误
的话,就参照小编的那篇文章:《CentOS7上ElasticSearch安装填坑记》吧,里面包车型大巴坑作者都三个个填过了!


Elasticsearch的社会风气中,插件是很关键的一片段,比比较多功效都得以通过插件来兑现,因而下边就以常用的
IK分词器插件 的设置为例,来操作一下 Elasticsearch插件的装置

// 全局配置user nobody nobody;worker_processes 3;error_log logs/error.log;pid logs/nginx.pid;// events块配置events { use epoll; worker_connections 1024;}// http块配置http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request” ' '$status $body_bytes_sent "$http_referer” ' '"$http_user_agent" "$http_x_forwarded_for”’; access_log logs/access.log main; sendfile on; keepalive_timeout 65; // 虚拟主机1:基于域名codesheep.com server { listen 8088; server_name codesheep; access_log /codesheep/webserver/server1/log/access.log; error_page 404 /404.html; location /server1/location1 { root /codesheep/webserver; index index.server1-location1.htm; } location /server1/location2 { root /codesheep/webserver; index index.server1-location2.htm; } } // 虚拟主机2:基于IP地址:192.168.31.177 server { listen 8089; server_name 192.168.31.177; access_log /codesheep/webserver/server2/log/access.log; error_page 404 /404.html; location /server2/location1 { root /codesheep/webserver; index index.server2-location1.htm; } location /srv2/loc2 { alias /codesheep/webserver/server2/location2/; index index.server2-location2.htm; } location = /404.html { root /codesheep/webserver/; index 404.html; } }}

分词技艺是研究本领的基石,而
IK分词器是比较优秀的三个,接下去尝试安装一下啊

很肯定,在上述配置文件中安插了三个设想主机:一个 依靠域名
一个依据IP地址

[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key9 0 0 19STORED[root@localhost conf]# 

IK分词器版本与 ES版本对应,不能够搞错,可在 这里查看

为了注解该配置的没有错,大家相比较此布置,创设一个与其说对应的静态站点,其目录结构如下:

  • 此时去memcached1查看:
  • 下载 IK分词器插件

bf88必发唯一官网 16站点布局

这两天可以运行Nginx服务器,并在浏览器中实行测验

[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key9VALUE key9 0 19END
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip
  • 测验站点server1的走访

作者们开采 memcached2断开后,缓存 key9写到了
memcached第11中学,而对于客商来讲,由于是跟
twemproxy代理交互,因而并不可能以为到到后端 memcached2实例的下线

  • 解压 / 安装

bf88必发唯一官网 17server1/location1bf88必发唯一官网 18server1/location2

  • 大家再另行启航 memcached2

新建目录
/opt/elasticsearch/elasticsearch-6.4.2/plugins/elasticsearch-analysis-ik-6.4.2

那就印证配置文件中设想主机1配置生效!

下一场再持续通过代办写多少:

再将 zip包置于上述目录下并解压:

只顾:这里域名www.codesheep.com之所以能被分析识别,是因为地点配置了DNS服务器!

[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key10 0 0 1xSTOREDset key11 0 0 1ySTORED

unzip elasticsearch-analysis-ik-6.4.2.zip

  • 测验站点server2的访谈
  • 然后开采数目又写到 memcached第22中学了
  • 重启 Elasticsearch集群

bf88必发唯一官网 19server2/location1bf88必发唯一官网 20srv2/loc2

重启 Elasticsearch集群,若觉察如下内容,那表明插件安装成功:

那就认证配置文件中设想主机2安顿生效!

[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key10 VALUE key10 0 1xENDget key11VALUE key11 0 1yEND

bf88必发唯一官网 21检查IK分词器插件安装是或不是中标

鉴于力量轻便,若有错误可能不当之处,还请大家商讨指正,一同念书交换!

从上边那几个实验进程可以看出,一台 memcached实例挂掉后,twemproxy
能自动移除之;而回复后,twemproxy 可以自动识别同仁一视新出席到 memcached
组中重复采取

鉴于力量简单,若有错误或许不当之处,还请我们辩论指正,一齐上学交换!

怎么,很简短吗,正是三个解压放置的经过嘛!

  • My Personal Blog
  • 本人的四个月手艺博客之路
  • My Personal Blog:CodeSheep 程序羊
  • 自己的八个月手艺博客之路

出于本领有限,若有错误只怕不当之处,还请我们商酌指正,一同学习调换!

  • My Personal Blog:CodeSheep 程序羊
  • 自己的7个月技能博客之路

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图