3.高并发教程

Wesley13
• 阅读 810

高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

如果大家看了我的上一篇《2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离》文章,如果能很好的利用,那么其实已经可以轻松日抗千万级别的访问量了,但是如果业务涉及查询比较多,查询条件比较丰富,又或者我就想要查询的响应更快点,那么在mysql上面去做优化,其实比较辛苦,有没有更好的解决方案呢?答案是肯定的!它就是我们今天的主角,分布式全文搜索引擎elasticsearch.

技巧提示:mysql集群层主要提供核心业务逻辑的读写以及数据的冗余备份;elasticsearch负责前端的查询和展示。比如,用户的所有写操作都是在mysql的master服务器上面完成;然后通过主从机制,把数据同步至多个mysql从机,然后通过从机把数据同步至elasticsearch.因为有多个mysql从机,所有同步的时候划分合适数量的表分担至各个从机去同步,这样既可以减轻各个mysql服务器的压力,又可以更加高效同步。同步工具这里推荐logstash,大家自行搜索了解,如果遇到坑可以留言。

一、架构图
3.高并发教程

服务器准备:3台,ubuntu16.04系统+elasticsearch-6.2.4
slave1:192.168.1.191 ES集群master
slave2:192.168.1.192 ES集群slave
slave3:192.168.1.193 ES集群slave
[注意:nginx方向代理和mysql集群的配置这里不做说明,大家可以看我的之前的文章]

二、elasticsearch配置(分别在三台服务器上面进行如下操作)

1.java环境配置:

*请自行前往java官方下载java,然后解压至合适目录 vim /etc/profile加入如下内容: #java export JAVA_HOME=/home/qizexi/data/java #这个改为你java的解压目录 export JAVA_CLASS=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 保存,退出 source /etc/profile java -version看到如下内容即是java安装成功 --------------------------------------- java version "1.8.0_141" ---------------------------------------

2.账号准备:

elasticsearch不允许以root账号运行,所以我们可以添加一个es用户来负责运行elasticsearch useradd es passwd es

将elasticsearch-6.2.4的安装目录变更为es用户
chown -R es:es elasticsearch-6.2.4

改变ulimit的1024的限制
vim /etc/security/limits.conf
\* hard nofile 100000
\* soft nofile 100000
\* hard nproc 100000
\* soft nproc 100000
保存退出
source /etc/security/limits.conf
切换es用户(su es)之后运行
ulimit -n可以看到
100000
说明成功,否则可以重启生效:)

改变max\_map\_countd的限制:
vim /etc/sysctl.conf修改如下配置:
vm.max\_map\_count=262144
保存退出
运行:sysctl -p

3.主服务器配置(191):

cd 到elasticsearch-6.2.4的解压目录 vim config/elasticsearch.yml修改如下内容: cluster.name: my-app node.name: master network.host: 192.168.1.191 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"] 保存,然后使用es账号启动即可. su es bin/elasticsearch -d su root netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到): ------------------------------------------------------ 192.168.1.191:9200 192.168.1.191:9300

4.配置从服务器(192,193):

cd 到elasticsearch-6.2.4的解压目录 vim config/elasticsearch.yml修改如下内容: cluster.name: my-app node.name: slave1 #193服务器改为slave2 network.host: 192.168.1.192 #193服务器改为192.168.1.193 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"] 保存,然后使用es账号启动即可. su es bin/elasticsearch -d su root netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到): ------------------------------------------------------- 192.168.1.192:9200 #192上面看到是193 192.168.1.192:9300 #192上面看到是193

5.查看集群的状态:

curl -XGET 'http://192.168.1.191:9200/\_cat/nodes?v' 看到三个节点即可成功: ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.1.191 25 55 0 0.00 0.01 0.00 mdi * master 192.168.1.192 22 97 5 0.70 0.34 0.17 mdi - slave1 192.168.1.193 20 75 30 0.54 0.14 0.05 mdi - slave2

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
阿里P8面试官都说太详细了,你值得拥有
阿里P8级架构师第九篇:千亿流量高并发高可用分布式系统之数据治理篇阿里P8级架构师第十篇:千亿流量高并发高可用分布式系统之人工智能加成篇数据融合模块1.构建画像模块2.召回策略模块3.排序模型模块ctr预估4.微服务模块5.ABTest模块6.Spark调优模块7.推荐系统落地实践阿里P8级架构师第十一篇:千亿流量高并发高
Stella981 Stella981
3年前
Docker系列之MySQL安装教程
Docker系列之MySQL安装教程!在这里插入图片描述(https://oscimg.oschina.net/oscnet/up290e6ea2ceb61c35d155a02d468e92e5.png)有了前面的基础教程Docker系列之常用命令操作手册(https://www.oschina.net/action/GoToLink?
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Wesley13 Wesley13
3年前
Java架构师之解决分布式事务数据一致性视频教程开发与实践分布式事务实现
Java架构师之解决分布式事务数据一致性视频教程开发与实践分布式事务实现全新JAVA高级架构师,微服务架构,亿级高并发,分布式架构,源码剖析系列,项目实战,设计模式实战,数据结构与算法,消息中间件,并发编程多线程,服务器系列,数据库,分布式事务,大型分布式综合电商项目实战等视频教程
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这