注意:
本部署工具依赖saltstack工具,最好要安装es的服务器上都安装了salt
salt-ssh 是 0.17.0 新出现的一个功能,它是依赖ssh 来进行远程命令执行的工具,
好处就是不需要在客户端安装minion,也不需要安装master(直接安装 salt-ssh 这个包即可),
有些时候你还真的需要salt-ssh(例如:条件不允许安装minion、不用长期管理某台minion),
最重要的是salt-ssh 并不只是单纯的ssh 工具,它支持salt 大部分的功能,如grains、modules、state 等
需要注意的是salt-ssh并没有继承原来的通讯架构 (ZeroMQ),也就是说它的执行速度啥的都会比较慢
操作步骤
1.把deploy_es.tar.gz 上传到salt-master服务器上
2.把deploy_es.tar.gz解压到服务器根目录下
tar -zxvf deploy_es.tar.gz -C /
3.需要配置要部署es的服务器的名称和角色
/srv/pillar/ip.sls
10.144.37.108:
name: 'search1'
role: 'master'
10.144.48.33:
name: 'search2'
role: 'data'
4.分别修改master、data的配置文件目录
/srv/salt/elasticsearch/files/data/elasticsearch.yml
/srv/salt/elasticsearch/files/master/elasticsearch.yml
5.修改分配内存
/srv/salt/elasticsearch/files/elasticsearch
ES_HEAP_SIZE=1g
6.把ip.sls同步到所有机器上
salt '*' saltutil.refresh_pillar
7.修改完成之后执行以下命令把文件传到其他服务器并自动完
成所有es服务器配置
salt '*' state.highstate
8.最后查看执行结果
9.最后调起所有es服务器
salt '*' cmd.run '/gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch -d'
注:好像salt中不能执行别名
下面是工具自动完成的配置
1.修改机器名称
vim /etc/hosts
ip search10
2.禁用内存锁定
vim /etc/security/limits.conf
– memlock unlimited
执行 ulimit -l unlimited
3.禁用交换分区
vim /etc/fstab
注释掉swap分区
执行swapoff -a
4.创建目录
mkdir -p /gomeo2o/work/
mkdir -p /gomeo2o/data/es/
mkdir -p /gomeo2o/logs/es/
5创建别名
echo "alias es_start=/gomeo2o/nfs/data/elasticsearch-1.5.1/bin/elasticsearch -d && tail -100f /gomeo2o/logs/es/gomeo2o.log'" >> ~/.bash_profile
echo "alias es_log='tail -100f /gomeo2o/logs/es/gomeo2o.log'" >> ~/.bash_profile
source ~/.bash_profile
下面是
/srv/pillar/ip.sls
10.144.37.108: name: 'search1' role: 'master' 10.144.48.33: name: 'search2' role: 'data'
/srv/pillar/top.sls
base: '*': - ip
/srv/salt/top.sls
base: '*': - elasticsearch.init
/srv/salt/elasticsearch/config.sls
myconfig: cmd.run: {%set ip = grains['ipv4'][0]%} - names: - echo {{ip}}" "{{pillar[ip]['name']}} >> /etc/hosts - echo "- memlock unlimited " >> /etc/security/limits.conf - mkdir -p /gomeo2o/work/ - mkdir -p /gomeo2o/data/es/ - mkdir -p /gomeo2o/logs/es/ - alias es_start='/gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch -d && tail -100f /gomeo2o/logs/es/gomeo2o.log' - alias es_log='tail -100f /gomeo2o/logs/es/gomeo2o.log' - echo "alias es_start='/gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch -d && tail -100f /gomeo2o/logs/es/gomeo2o.log'" >> ~/.bash_profile - echo "alias es_log='tail -100f /gomeo2o/logs/es/gomeo2o.log'" >> ~/.bash_profile - sed -i 's/^.*swap/#&/' /etc/fstab myrun: cmd.run: - names: - swapoff -a - ulimit -l unlimited - source ~/.bash_profile - require: - cmd: myconfig
/srv/salt/elasticsearch/init.sls
include: - elasticsearch.install - elasticsearch.config
/srv/salt/elasticsearch/install.sls
#elasticsearch.tar.gz es_source: cmd.run: - cwd: / - names: - mkdir -p /gomeo2o/app/ - unless: test -d /gomeo2o/app/ file.managed: - name: /gomeo2o/app/elasticsearch-1.5.1.tar.gz - unless: test -e /gomeo2o/app/elasticsearch-1.5.1.tar.gz - source: salt://elasticsearch/files/elasticsearch-1.5.1.tar.gz - require: - cmd: es_source #extract extract_es: cmd.run: - cwd: /gomeo2o/app - names: - tar -zxvf elasticsearch-1.5.1.tar.gz - unless: test -d /gomeo2o/app/elasticsearch-1.5.1 - require: - file: es_source del_config: cmd.run: - names: - rm -rf /gomeo2o/app/elasticsearch-1.5.1/config/elasticsearch.yml - rm -rf /gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch - require: - cmd: extract_es load_config: file.managed: - name: /gomeo2o/app/elasticsearch-1.5.1/config/elasticsearch.yml - unless: test -e /gomeo2o/app/elasticsearch-1.5.1/config/elasticsearch.yml {% set ip = grains['ipv4'][0] %} {% set role = pillar[ip]['role'] %} {% if 'master' in role %} - source: salt://elasticsearch/files/master/elasticsearch.yml {% else %} - source: salt://elasticsearch/files/data/elasticsearch.yml {% endif %} - require: - cmd: del_config load_es: file.managed: - name: /gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch - unless: test -e /gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch - source: salt://elasticsearch/files/elasticsearch - require: - cmd: del_config add_exe: cmd.run: - name: chmod +x /gomeo2o/app/elasticsearch-1.5.1/bin/elasticsearch - require: - file: load_es
需要demo 的可以联系博主索取密码