Browse Source

auto start the twemproxy and template service

Chris Mague 5 years ago
parent
commit
1f4a9d7013

+ 16 - 28
ansible/files/twemproxy.ctmpl

@@ -1,36 +1,24 @@
 cpredis:
-  listen: 0.0.0.0:22124
+  listen: 0.0.0.0:2112
   hash: fnv1a_64
   distribution: ketama
-  timeout: 100
+  timeout: 1000
   preconnect: true
   redis: true
   auto_eject_hosts: false
   server_retry_timeout: 2000
-  server_failure_limit: 1
+  backlog: 2048
+  server_connections: 10
   servers:
-{{ range service "redis-19901" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19902" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19903" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19904" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19905" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19906" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19907" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19908" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19909" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19910" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19911" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-{{ range service "redis-19912" }}
-   - {{ .Address }}:{{ .Port }}:1{{ end}}
-
+{{ range service "redis-19901" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19902" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19903" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19904" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19905" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19906" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19907" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19908" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19909" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19910" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19911" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}
+{{ range service "redis-19912" }}    - {{ .Address }}:{{ .Port }}:1{{ end}}

+ 19 - 0
ansible/templates/systemd_twemproxy-template.j2

@@ -0,0 +1,19 @@
+#####################################################################
+# {{ ansible_managed }}
+
+#####################################################################
+[Unit]
+Description=Redis Twemproxy Template
+After=network.target
+
+[Service]
+WorkingDirectory=/redis
+Type=simple
+LimitNOFILE=65535
+User=root
+ExecStart=/opt/consul-template/bin/consul-template -consul="{{ consul_server_nodes[0] }}:8500" -template '/etc/nutcracker.ctmpl:/etc/nutcracker.yml:/bin/systemctl kill -s HUP twemproxy.service'
+
+
+[Install]
+WantedBy=multi-user.target
+Alias=twemproxy-template.service

+ 19 - 0
ansible/templates/systemd_twemproxy.j2

@@ -0,0 +1,19 @@
+#####################################################################
+# {{ ansible_managed }}
+
+#####################################################################
+[Unit]
+Description=Redis Twemproxy
+After=network.target  twemproxy-template.service
+
+[Service]
+WorkingDirectory=/redis
+Type=simple
+LimitNOFILE=65535
+User=redis
+ExecStart=/usr/local/sbin/nutcracker -c /etc/nutcracker.yml -m 163840
+
+
+[Install]
+WantedBy=multi-user.target
+Alias=twemproxy.service

+ 52 - 3
ansible/test_nodes.yml

@@ -6,6 +6,11 @@
   become_method: sudo
   gather_facts: yes
 
+  vars:
+    consul_server_nodes:
+      - 10.161.11.148
+      - 10.161.2.71
+      - 10.161.18.19
 
   pre_tasks:
     - name: Update Apt Cache
@@ -111,6 +116,50 @@
       become: yes
   roles:
     - ntp
-    - { role: consul-template,
-        consul_template_consul_server: 10.161.11.148,
-        consul_template_use_upstart: false }
+#    - { role: consul-template,
+#        consul_template_consul_server: 10.161.11.148,
+#        consul_template_use_upstart: false }
+
+  post_tasks:
+    - name: create the redis dir
+      file:
+        path: /redis
+        owner: redis
+        group: redis
+        mode: '0755'
+        state: directory
+    - name: Twemproxy-Template Systemd 
+      template:
+        src: systemd_twemproxy-template.j2
+        dest: /lib/systemd/system/twemproxy-template.service
+        owner: root
+        group: root
+        mode: 0644
+    - name: Twemproxy Systemd 
+      template:
+        src: systemd_twemproxy.j2
+        dest: /lib/systemd/system/twemproxy.service
+        owner: root
+        group: root
+        mode: 0644
+    - name: copy the nutcracker template file
+      copy:
+        src: twemproxy.ctmpl
+        dest: /etc/nutcracker.ctmpl
+        owner: redis
+        group: redis
+        mode: '0644'
+    - name: create a temporary twemproxy config file
+      shell: "echo \"cpredis:\n  listen: 0.0.0.0:2112\n  servers:\n    - localhost:19901:1\" > /etc/nutcracker.yml"
+      args:
+        creates: /etc/nutcracker.yml
+    - name: Enable Twemproxy Service
+      systemd:
+        name: twemproxy.service
+        enabled: yes
+        state: started
+    - name: Enable Twemproxy-Template Service
+      systemd:
+        name: twemproxy-template.service
+        enabled: yes
+        state: started