詳細検索

Instalação fonte do redis (chef-solo)

Avatar
por komi
3 min de leitura

Instalação fonte do redis (chef-solo)
Traduzido do 日本語 • Ver original

Olá. Aqui é a Komiya do OPS.
Pedi para você instalar a fonte redis e o CHEF-SOLO, então vou gravar.

★ Requisitos
Por favor, use a versão 2.8.4. (Fonte mais recente em 2014/1)

★ As seguintes tarefas
・Verifique a versão que entra por rpm (*Verifique com yum no servidor no mesmo ambiente)
redis.x86_64 0:2.4.10-1.el6

*A instalação de código-fonte é necessária porque não atende aos requisitos.

・Preparação para o solo de chef

[shell]$ ssh-copy-id -i ~/.ssh/id_dsa.pub server2 $ ssh-copy-id -i ~/.ssh/id_dsa.pub server1

$ faca solo preparar servidor1$ faca solo preparar servidor2[/shell]

・Criação de funções
[shell]$ vi roles/rankingAPI.json { "name":"rankingAPI", "chef_type": "role", "json_class":"Chef::Role", "default_attributes":{ "base_setting": { "swappiness": "0", "tcp_tw_reuse": "0", "tcp_tw_recycle": "0", "tcp_fin_timeout": "10", "tcp_max_syn_backlog": "8192", "somaxconn": "8192", "ntpserver1": "ntp.nict.jp" } }, "override_attributes":{}, "description":"rankingAPI's role", "run_list": [ "recipe[roles::rankingAPI]" ] }

$ vi site-cookbooks/roles/recipes/rankingAPI.Rb inclui_recipe "base_setting::common-pkgs" inclui_recipe "base_setting::sysCTL" inclui_recipe "base_setting::NTPD" #include_recipe "base_setting::RPS_cpus" inclui_recipe "login-users::create_user" inclui_recipe "login-users::key_copy" #include_recipe "java::java" #include_recipe "nginx::nginx" #include_recipe "play::p lay" #include_recipe "mysqld::mysql-client" #include_recipe "git::git" inclu_recipe i\ "redis::redis"[/shell]

*Receitas que não estão sujeitas a trabalho já foram comentadas por enquanto.

Edição de ・node
[shell]$ vi nós/server1.json $ vi nós/server2.json { "run_list":[ "role[rankingAPI]" ] }[/shell]

・Criação de livro de receitas
[shell]$ CD ~/chef-repo $ knife cookbook criar redis -o site-cookbooks[/shell]

・Prepare os arquivos necessários, detalhes_bags e receitas
[shell]$ mkdir -p site-cookbooks/redis/files/default/usr/local/src $ cd site-cookbooks/redis/files/default/usr/local/src $ wget http://download.redis.io/releases/redis-2.8.4.tar.gz $ cd ~/chef-repo $ knife solo data bag criar pkg_versions redis { "id": "redis", "version": "2.8.4" } $ knife solo data bag editar pkg_versions redis

$ vim site-cookbooks/redis/recipes/redis.rb ---------------------------------------- version = data_bag_item('pkg_versions','redis')['version'] redis_pkg="redis-#{version}" cookbook_file "/usr/local/src/#{redis_pkg}.tar.gz" não_if "ls /usr/local/src/#{redis_pkg}.tar.gz" fonte "usr/local/src/#{redis_pkg}.tar.gz" fim

%W{tcl make gcc}.each do |pkg| pacote pkg fazer ação :install not_if "'rpm -qa|grep #{pkg}" fim

Bash "redis-install" não_if código "qual redis-cli <-EOC cd="" sr/local/src="" tar="" zxf="" #{redis_pkg}.tar.gz="" cd="" #{redis_pkg}="" make="" -j="" &&="" make="" install="" eoc="" end="" directory="" "/etc/redis"="" do="" not_if="" "ls="" tc/redis"="" mode="" 0755="" action="" :create="" recursive="" false="" end="" directory="" "/usr/local/redis"="" do="" not_if="" "ls="" sr/local/redis"="" mode="" 0755="" action="" :create="" recursive="" false="" end="" cookbook_file="" "/etc/init.d/redis"="" do="" source="" "/etc/init.d/redis"="" mode="" 0754="" end="" cookbook_file="" "/etc/redis/6379.conf"="" do="" source="" "etc/redis/6379.conf"="" mode="" 0644="" notifies="" :restart,="" 'service[redis]'="" end="" cookbook_file="" "/etc/logrotate.d/redis"="" do="" source="" "etc/logrotate.d/redis"="" mode="" 0644="" end="" service="" "redis"="" do="" not_if="" "ps="" -ef|grep="" redis|grep="" -v="" grep"="" supports="" :status=""> " é verdadeiro, :restart => ação verdadeira [ :enable, :start ] fim ----------------------------------------

$ Knife Cookbook Test Redis

$ sudo cp -p utils/redis_init_script /etc/init.d/redis $ diff /etc/init.d/redis /usr/local/src/redis-2.8.4/utils/redis_init_script 5,9d4 < # chkconfig: - 85 15 < # processname: redis < prog=$(basename $EXEC) 15a10 >< < # description: redis-server < . /etc/rc.d/init.d/functions 14d8 PIDFILE=/var/run/redis_${REDISPORT}.pid 17d11 < PIDFILE=`grep pidfile ${CONF} |awk '{print $2}'` 19c13,14 < start() { --- > caso "$1" em > start) 26,27d20 < sleep 2 < echo -100 > /proc/'cat $PIDFILE'/oom_score_adj 29,30c22,23 < } < stop() { --- > ;; > stop) 45,60d37< start < start) < ;; < case "$1" in < < stop) < stop < restart) < start 62,64d38 < ;; < status) < rh_status < } < rh_status() { < ;;

$ mkdir -p site-cookbooks/redis/files/default/etc/init.d $ vim site-cookbooks/redis/files/default/etc/init.d/redis ---------------------------------------- #!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. # chkconfig: - 85 15 # description: redis-server # processname: redis

. /etc/rc.d/init.d/functions

REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli prog=$(basename $EXEC)

CONF="/etc/redis/${REDISPORT}.conf" PIDFILE=`grep pidfile ${CONF} |awk '{print $2}'`

start() { if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF sleep 2 echo -100 >< < status $prog < } < stop /proc/'cat $PIDFILE'/oom_score_adj fi } stop() { if [ ! -f $PIDFILE ] então ecoa "$PIDFILE não existe, o processo não está rodando" else PID=$(cat $PIDFILE) ecoa "Parando ..." $CLIEXEC -p $REDISPORT desligando enquanto [ -x /proc/${PID} ] fazem eco "Esperando Redis desligar..." sono 1 feito eco "Redis parou" fi }

rh_status() { status $prog }

case "$1" em start) start ;; stop) stop ;; restart) stop start ;; status) rh_status ;; *) echo "Por favor, use start ou stop como primeiro argumento" ;; esac ----------------------------------------[/shell] foi modificado para que possa ser adicionado ao chkconfig, restart e status, e oom_killer contramedidas e PIDs são lidos da configuração.
Parecia que, se você não puder reiniciar ou fazer status, não pode iniciar com o recurso de serviço do lado do chef.
O script de inicialização incluído no pacote fonte não parecia ser para rh OS.

[shell]cd site-cookbooks/redis/files/default/usr/local/src $ tar xf redis-2.8.4.tar.gz redis-2.8.4/redis.conf mkdir -p ~/chef-repo/site-cookbooks/redis/files/default/etc/redis cp -p redis-2.8.4/redis.conf ~/chef-repo/site-cookbooks/redis/files/default/etc/redis/6379.conf vi ~/chef-repo/site-cookbooks/redis/files/default/etc/redis/6379.conf $ diff ~/chef-repo/site-cookbooks/redis/redis/files/default/etc/redis/6379.conf redis-2.8.4/redis.conf 37c37 < daemonize yes --- > daemonize no 94c94 < logfile "/var/log/redis.log" --- > arquivo de log "" 178,179c178 < #dir ./ < dir /usr/local/redis --- > dir./

$ cd ~/chef-repo $ mkdir -p site-cookbooks/redis/files/default/etc/logrotate.d/ $ vi site-cookbooks/redis/files/default/etc/logrotate.d/redis /var/log/redis.log { weekly missingok copytruncate rote 12 compress notifempty }[/shell]

・Aplicação da receita
[shell]$ faca cozinheiro solo garçoê1$ faca cozinheiro solo2[/shell]

・Confirmação (após SSH)
[shell]$ logrotate -d /etc/logrotate.d/redis $ ps -ef|grep redis $ netstat -lnpt $ sudo service redis status redis-server (pid 21560) está rodando... $ redis-cli $ cat /proc/'cat /var/run/redis.pid'/oom_score_adj -100 $ tail /etc/sysctl.conf $ ll /home $ sudo su - $ sudo ls -lha /home/*/.ssh/ $ ntpq -p[/shell]

・Referência
Instalação do Redis no Sakura VPS (CentOS 6.3) e registro no chkconfig - Entatsu Records Redis 2.2.12 Notas de Instalação (amazon Linux) - diário do desenvolvedorInstruções de Instalação Redis para CentOS/Mac OSX - Método Chave-Valor semelhante ao Memcache e Banco de Dados In-Memory com Suporte a Persistência - Sake and Tears, Ruby and Rails
[[CentOS]redis instalação - Qiita[Keita]] (http://qiita.com/sora083/items/a3b7e754cfaffdb9a51c)
[Notas de várias coisas que tentei usar Redis - Qiita [Keita]] (http://qiita.com/A-gen/items/345c07d830205a7ea6cb)
redis-debian/src/etc/logrotate.d/redis-server em master · mpillar/redis-debian ·GitHub Download – Não Seja Morto pelo Assassino do OOM de Redis - Comece Agora! Gerenciamento de Sistema Linux / Vol.238

Obrigado por assistir ao que foi dito acima.

</-EOC>

Related Articles