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

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

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

一、架构图

服务器准备: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

3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建的更多相关文章

  1. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

  2. 高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  3. 1.高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  4. 分布式全文搜索引擎ElasticSearch—超详细

    1 ElasticSearch 1.1 ES的概念和特点 ES:全文检索的框架,专门做搜索,支持分布式.集群.封装的Lucene. 特点: 原生的Lucene使用的不足,优化了Lucene的调用方式 ...

  5. 分布式全文搜索引擎ElasticSearch

    一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...

  6. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  7. Java高并发编程基础三大利器之CountDownLatch

    引言 上一篇文章我们介绍了AQS的信号量Semaphore<Java高并发编程基础三大利器之Semaphore>,接下来应该轮到CountDownLatch了. 什么是CountDownL ...

  8. java多线程与并发(基础篇)

    一.进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位. 线程:是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的 资源. 虽然系统是把资源 ...

  9. 高并发编程基础(java.util.concurrent包常见类基础)

    JDK5中添加了新的java.util.concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法 ...

随机推荐

  1. CSS实现太极图(1个div实现)

    使用一个div实现太极图的步骤如下: HTML部分: <body> <div class="box-taiji"> </div> </bo ...

  2. vue-router初涉

    概念: vue-router: vue官方路由插件. 路由: 指单页面应用的路径管理系统.在vue中都是单页应用,相当于只有一个index.html页面,所以无法使用<a>标签,我们使用路 ...

  3. java截取字符串

    public class Temp { public static void main(String[] args) { String a="dsadgafa34"; System ...

  4. Hibernate详讲

    一 概述 1.JPA Java Persistence API,是Java EE为ORM框架定义的规范,任何使用java语言的ORM框架都必须实现该规范.Hibernate/Mybatis都是是JPA ...

  5. 【python爬虫】 之 爬取百度首页

    刚开始学习爬虫,照着教程手打了一遍,还是蛮有成就感的.使用版本:python2.7 注意:python2的默认编码是ASCII编码而python3默认编码是utf-8 import urllib2 u ...

  6. 浏览器根对象window之performance

    W3C性能小组引入的新的API,目前IE9以上的浏览器都支持. 为了解决当前性能测试的困难,W3C推出了一套性能API标准,各种浏览器对这套标准的支持如今也逐渐成熟起来.这套API的目的是简化开发者对 ...

  7. MySQL数据库(9)----从命令行获取元数据

    1. mysqlshow 命令提供的信息与某些 SHOW 语句很相似,因此可以从命令行提示符获取数据库和表的信息. (i)列出服务器所管理的数据库: root@javis:~$ mysqlshow - ...

  8. centos7安装lua语言环境

    Linux 上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可. 官网地址:http://www.lua.org/download.html 我这里安装的是:lua-5.3.0.tar ...

  9. 何时需要做urlEncode,以及为什么要做

    在RFC1738中,对于URL可以使用的字符集做了如下规定: “ 只有0-9a-zA-Z的字母以及$-_.+!*'(),"这几个特殊字符 ” 而在html4中扩展了所有的unicode ch ...

  10. sort 、sorted、range、join方法 数字的正序、倒叙、翻转

    大家可以想象一下 如果一串数字 是混乱的没有顺序这个时候你想要排序怎么办呢?  这个时候顺势而生的就有了sort方法 把数字从大到小的排列----->sort() 只对列表 li = [3, 5 ...