设为首页 收藏本站
查看: 1057|回复: 0

[经验分享] puppet负载均衡之nginx+mongrel-TNT、运维之路

[复制链接]

尚未签到

发表于 2018-8-3 08:18:26 | 显示全部楼层 |阅读模式
  


  • yum install -y rubygem-mongrel
  • echo -e "PUPPETMASTER_PORTS=( 18140 18141 18142 18143 18144 )\nPUPPETMASTER_EXTRA_OPTS=\"—servertype=mongrel  --ssl_client_header=HTTP_X_SSL_SUBJECT\"" > /etc/sysconfig/puppetmaster
  • useradd www
  • groupadd www
  • CORE_NUM=`cat /proc/cpuinfo | grep "model name" | wc -l`
  • cd $path
  • tar -zxvf pcre-8.10.tar.gz
  • cd pcre-8.10/
  • make clean
  • ./configure --disable-shared --with-pic
  • make && make install
  • cd ../
  • tar -zxvf nginx-1.2.1.tar.gz
  • cd ./nginx-1.2.1/
  • ./configure --prefix=$path_nginx --with-http_stub_status_module --with-http_ssl_module
  • make && make install
  • touch $path_nginx/html/index.php
  • process () {
  •     ZERO=`for((i=1;i<=$CORE_NUM;i++));do echo -n &quot;0&quot;;done;`
  •     for (( i = $CORE_NUM; i > o; i-- )); do
  •         echo -n ${ZERO:0:$i-1}&quot;1&quot;${ZERO:$i}&quot; &quot;
  •     done
  • }
  • sed -i &quot;s/worker_processes.*/worker_processes $CORE_NUM;\nworker_cpu_affinity $(process);/&quot; $path_nginx/conf/nginx.conf
  • sed -i &quot;s/#user.*/user www www;/&quot; $path_nginx/conf/nginx.conf
  • sed -i &quot;s/index.html index.htm;/index.php &/&quot; $path_nginx/conf/nginx.conf
  • sed -i &quot;47 a#\nlocation ~ \\\.php$ {\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_index index.php;\nfastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/\$fastcgi_script_name;\ninclude fastcgi_params;\ninclude fastcgi.conf;}#&quot; $path_nginx/conf/nginx.conf

  • ######隐藏版本号##########################
  • sed -i &quot;s/^http {/&\n    server_tokens off;/&quot; $path_nginx/conf/nginx.conf
  • ###################################nginx自启动########################################
  • #sed -i &quot;s#^path_nginx=.*#path_nginx=$path_nginx#&quot; $path/nginxd
  • cp $path/nginxd /etc/init.d/
  • mv $path_nginx/conf/nginx.conf $path_nginx/conf/nginx.conf.bak
  • mv $path/nginx.conf $path_nginx/conf
  • chmod 755 /etc/init.d/nginxd
  • chkconfig --add nginxd
  • chkconfig nginxd on
  • kill -9 `/usr/sbin/lsof -i:8140 | grep 8140 |awk '{print $2}'`
  • echo &quot;############################################&quot;
  • echo &quot;                status              &quot;
  • service nginxd start
  • service puppetmaster start
  

  注意下:nginx.conf里面的内容如下,请大家按照的自己的环境修改一下:
  


  • user www www;
  • worker_processes 1;
  • worker_cpu_affinity 1 ;

  • error_log  logs/error.log;
  • #error_log  logs/error.log  notice;
  • #error_log  logs/error.log  info;

  • pid        /usr/local/nginx/nginx.pid;


  • events {
  •     worker_connections  1024;
  • }


  • http {
  •     server_tokens off;
  •     include       mime.types;
  •     default_type  application/octet-stream;

  •     #log_format  main  '$remote_addr - $remote_user [$time_local] &quot;$request&quot; '
  •     #                  '$status $body_bytes_sent &quot;$http_referer&quot; '
  •     #                  '&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;';

  •     #access_log  logs/access.log  main;

  •     sendfile        on;
  •     #tcp_nopush     on;

  •     #keepalive_timeout  0;
  •     keepalive_timeout  65;
  •     upstream puppetmaster {
  •     server 127.0.0.1:18140;
  •     server 127.0.0.1:18141;
  •     server 127.0.0.1:18142;
  •     server 127.0.0.1:18143;
  •     server 127.0.0.1:18144;
  •     }
  •     #gzip  on;
  •     server {
  •     listen 8140;
  •     root /etc/puppet;
  •     access_log /usr/local/nginx/logs/puppet_access.log;
  •     error_log /usr/local/nginx/logs/puppet_error.log;
  •     ssl on;
  •     ssl_session_timeout 5m;
  •     #如下为Puppetmaster服务器端证书地址
  •     ssl_certificate /var/lib/puppet/ssl/certs/server.domain.com.pem;
  •     ssl_certificate_key /var/lib/puppet/ssl/private_keys/server.domain.com.pem;
  •     ssl_client_certificate /var/lib/puppet/ssl/ca/ca_crt.pem;
  •     ssl_crl /var/lib/puppet/ssl/ca/ca_crl.pem;
  •     ssl_verify_client optional;
  •     # File sections
  •     location /production/file_content/files/ {
  •     types { }
  •     default_type application/x-raw;
  •     #主要用于推送文件,定义files别名路径
  •     alias /etc/puppet/files/;
  •     }
  •     # Modules files sections
  •     location ~ /production/file_content/modules/.+/ {
  •     root /etc/puppet/modules;
  •     types { }
  •     default_type application/x-raw;
  •     #rewrite ^/production/file_content/modules/(.+)/(.+)$ /$1/files/$2 break;
  •     rewrite ^/production/file_content/modules/([^/]+)/(.+)$ /$1/files/$2 break;
  •     }
  •     location / {
  •     #设置跳转到puppetmaster负载均衡
  •     proxy_pass http://puppetmaster;
  •     proxy_redirect off;
  •     proxy_set_header Host $host;
  •     proxy_set_header X-Real-IP $remote_addr;
  •     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  •     proxy_set_header X-Client-Verify $ssl_client_verify;
  •     proxy_set_header X-SSL-Subject $ssl_client_s_dn;
  •     proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
  •     proxy_buffer_size 10m;
  •     proxy_buffers 1024 10m;
  •     proxy_busy_buffers_size 10m;
  •     proxy_temp_file_write_size 10m;
  •     proxy_read_timeout 120;
  •     }

  •     }
  • }
  

  另外说明下脚本里面的nginxd,是指nginx的启动脚本,内容如下:
  


  • #!/bin/sh
  • #
  • # nginx - this script starts and stops the nginx daemin
  • #
  • # chkconfig:   - 85 15
  • # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
  • #               proxy and IMAP/POP3 proxy server
  • # processname: nginx
  • # config:      /usr/local/nginx/conf/nginx.conf
  • # pidfile:     /usr/local/nginx/logs/nginx.pid

  • # Source function library.
  • . /etc/rc.d/init.d/functions

  • # Source networking configuration.
  • . /etc/sysconfig/network

  • # Check that networking is up.
  • [ &quot;$NETWORKING&quot; = &quot;no&quot; ] && exit 0

  • nginx=&quot;/usr/local/nginx/sbin/nginx&quot;
  • prog=$(basename $nginx)

  • NGINX_CONF_FILE=&quot;/usr/local/nginx/conf/nginx.conf&quot;

  • lockfile=/var/lock/subsys/nginx

  • start() {
  •     [ -x $nginx ] || exit 5
  •     [ -f $NGINX_CONF_FILE ] || exit 6
  •     echo -n $&quot;Starting $prog: &quot;
  •     daemon $nginx -c $NGINX_CONF_FILE
  •     retval=$?
  •     echo
  •     [ $retval -eq 0 ] && touch $lockfile
  •     return $retval
  • }

  • stop() {
  •     echo -n $&quot;Stopping $prog: &quot;
  •     killproc $prog -QUIT
  •     retval=$?
  •     echo
  •     [ $retval -eq 0 ] && rm -f $lockfile
  •     return $retval
  • }

  • restart() {
  •     configtest || return $?
  •     stop
  •     start
  • }

  • reload() {
  •     configtest || return $?
  •     echo -n $&quot;Reloading $prog: &quot;
  •     killproc $nginx -HUP
  •     RETVAL=$?
  •     echo
  • }

  • force_reload() {
  •     restart
  • }

  • configtest() {
  •   $nginx -t -c $NGINX_CONF_FILE
  • }

  • rh_status() {
  •     status $prog
  • }

  • rh_status_q() {
  •     rh_status >/dev/null 2>&1
  • }

  • case &quot;$1&quot; in
  •     start)
  •         rh_status_q && exit 0
  •         $1
  •         ;;
  •     stop)
  •         rh_status_q || exit 0
  •         $1
  •         ;;
  •     restart|configtest)
  •         $1
  •         ;;
  •     reload)
  •         rh_status_q || exit 7
  •         $1
  •         ;;
  •     force-reload)
  •         force_reload
  •         ;;
  •     status)
  •         rh_status
  •         ;;
  •     condrestart|try-restart)
  •         rh_status_q || exit 0
  •             ;;
  •     *)
  •         echo $&quot;Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}&quot;
  •         exit 2
  • esac
  

  这样大概的系列脚本就结束了;
  对于Puppet,其实还可以结合下func来使用;具体的安装过程可以找一下 老广的博客;
  另外最近刚知道有个自动化部署的工具,叫salt,最近测试了一下感觉还不错,所以决定继续深入学习;关于salt的安装过程已经放出,有兴趣的可以一起学习下。
  OVER!!!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545616-1-1.html 上篇帖子: 自动化运维工具puppet学习笔记之基础篇 下篇帖子: puppet系列之lnmp模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表