Nginx 대형 클 러 스 터 배치 절차 및 개선

7092 단어 linux
환경 준비
nginx 전단 스케줄 러 서버 2 대: nginx 1: 192.168.0.1 nginx 2: 192.168.0.2 nginx 백 엔 드 페이지 서버 8 대: 웹 1: 192.168.0.10 웹 2: 192.168.0.11 웹 3: 192.168.0.12 웹 4: 192.168.0.13 웹 5: 192.168.0.14 웹 6: 192.168.0.15 웹 7: 192.168.0.16 웹 7: 192.168.0.16 웹 8: 192.168.0.17 keepaliveip 한 keepalive: 192.168.0.3
ansible 준비
ansible 을 이용 하여 더욱 빠 른 구축 1. 우선 호스트 에 ansible yum - y install ansible 2. hosts 주소 vim / etc / ansible / hosts 설정
[nginx]
nginx[1:2]
[web]
web[1:8]
[web-php]
web[1:4]
[web-nginx]
web[5:8]

주: ssh 포트 는 모두 22 입 니 다. 그렇지 않 으 면 포트 정 보 를 따로 설정 해 야 합 니 다. 3. ansible 기기 의 hosts 주소 vim / etc / hosts 를 설정 합 니 다.
192.168.0.1 nginx1
192.168.0.2 nginx2
192.168.0.10 web1
192.168.0.11 web2
192.168.0.12 web3
192.168.0.13 web4
192.168.0.14 web5
192.168.0.15 web6
192.168.0.16 web7
192.168.0.17 web8

4. 공사 비밀 키 ssh - keygen - t rsa - b 4096 그 중 id 설정rsa 는 비밀 키 idrsa. pub. 이 건 공개 키 입 니 다.
공개 키 를 클 라 이언 트 에 복사 하고 authorized 생 성keys 권한 600 및 수정 / etc / ssh / sshdconfig
RSAAuthentication yes
PubkeyAuthentication yes

PasswordAuthentication no

ansible 첫 로그 인 설정 yes vim ansible. cfg 입력 하지 않 음
host_key_checking = False  

5. ansible 환경 을 테스트 하여 ansible 웹 - m ping 을 모두 녹색 으로 되 돌려 주 고 단기 고장 단기 검사.
이 기 계 는 yum 창 고 를 설정 하고 nginx 의 rpm 패 키 지 를 만 듭 니 다.
설 정 된 repo 파일 을 모든 호스트 에 전송 하고 nginx 를 설치 합 니 다.
ansible all -m copy -a 'src=**.repo dest=/etc/yum.repo.d/'

6. 편 집 된 ngix. conf 를 프 록 시 서버 에 전송 합 니 다.
ansible nginx -m copy -a '/usr/local/nginx/conf/'

설정 은 다음 과 같 습 니 다.
http {
.. ..
#  upstream         ,      ( webserver)
#  server              
upstream webserver {
#  ip_hash       :            
#ip_hash;
#server 192.168.0.10:weight=1 max_fails=1 fail_timeout=30;
                server 192.168.0.10:80;
                server 192.168.0.11:80;
                server 192.168.0.12:80;
                server 192.168.0.13:80;
                server 192.168.0.14:80;
                server 192.168.0.15:80;
                server 192.168.0.16:80;
                server 192.168.0.17:80;
                
#weight        ,    1
#max_fails        
#fail_timeout        ,    
#down        ,       
        }
.. ..
server {
        listen        80;
        server_name  localhost;
            location / {
#  proxy_pass         webserver  
            proxy_pass http://webserver;
        }
}

6. nginx 다시 시작
/usr/local/nginx/sbin/nginx -s reload

7. curl 을 이용 한 방문 테스트
8. 백 엔 드 웹 서버 설정 백 엔 드 서버 는 모두 nginx 를 설치 해 야 합 니 다. 앞의 4 대 는 phop 전 4 대 에 설치 해 야 할 패키지: nginx, phop, phop - fpm, phop - my sql 후 4 대 는 nginx 를 설치 해 야 합 니 다.
이전 4 대 서버 에서 설정 해 야 할 파일 nginx. conf
location / {
            root   html;
            index  index.php  index.html   index.htm;
#       index.php,                IP,         ,         index.php     
        }
 location  ~  \.php$  {
            root           html;
            fastcgi_pass   127.0.0.1:9000;    #        9000  ,PHP   
            fastcgi_index  index.php;
            #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi.conf;
        }

php 테스트 페이지 만 들 기: vim / usr / local / nginx / html / test 1. php


조정 설정:
nginx. conf 파일

http {
client_header_buffer_size    1k;        //               
large_client_header_buffers  4 4k;        //                
gzip on;                            //    
gzip_min_length 1000;                //      
gzip_comp_level 4;                //    
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
                                    //       ,    mime.types
 open_file_cache          max=2000  inactive=20s;
 open_file_cache_valid    60s;
 open_file_cache_min_uses 5;
 open_file_cache_errors   off;
//         2000     ,  20          
//          60 ,60    
//        5     
.. ..
}

worker_processes  2;                  ## CPU      
events {
worker_connections 65535;        ##  worker       
use epoll;
}

server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires        30d;            //          30 
}
error_page   404  /40x.html;    //       

커 널 최적화: ulimit - a / / 모든 속성 값 보기 ulimit - hn 100000 / / 하 드 제한 설정 (임시 규칙) ulimit - sn 100000 / / 소프트 제한 설정 (임시 규칙) vim / etc / security / limits. conf...
  •           soft    nofile            100000
    
  •           hard    nofile            100000
    

  • 설정 을 조정 하려 면 nginx 를 다시 시작 해 야 합 니 다.
    로그 절단
    1. 뮤 직 비디오 access. log access2. log kill - USR 1 $(cat / usr / local / nginx / logs / nginx. pid) 를 수 동 으로 실행 합 니 다. 비고: / usr / local / nginx / logs / nginx. pid 파일 에 nginx 프로 세 스 PID 번호 가 저 장 됩 니 다.
    혹시
    vim / usr / local / nginx / logbak. sh 자동 완성
    #!/bin/bash
    date=`date +%Y%m%d`
    logpath=/usr/local/nginx/logs
    mv $logpath/access.log $logpath/access-$date.log
    mv $logpath/error.log $logpath/error-$date.log
    kill -USR1 $(cat $logpath/nginx.pid)
    

    crontab -e 03 03 * * 5 /usr/local/nginx/logbak.sh
    덧붙이다
    서버 상태 보기: 컴 파일 설치 시 모듈 추가 – with - httpstub_status_모듈 수정 프로필 정의 상태 페이지 vim / usr / local / nginx / conf / nginx. conf
    … …
    location /status {
                    stub_status on;
                     #allow IP  ;
                     #deny IP  ;
            }
    … …
    

    nginx 컬 다시 시작http://ip/status 방문 정 보 를 볼 수 있 습 니 다. 구체 적 인 내용 은 다음 과 같 습 니 다. Active connections: 현재 활동 의 연결 수량 입 니 다.Accepts: 클 라 이언 트 의 연결 총 수량 을 받 았 습 니 다.Handled: 클 라 이언 트 의 연결 총 수량 을 처 리 했 습 니 다.(일반적으로 서버 가 연결 수량 을 제한 하지 않 는 한 accepts 와 일치 합 니 다.)Requests: 클 라 이언 트 가 보 낸 요청 수량 입 니 다.Reading: 현재 서버 에서 클 라 이언 트 요청 헤더 의 수 를 읽 고 있 습 니 다.Writing: 현재 서버 에서 응답 정 보 를 쓰 고 있 는 수량 입 니 다.Waiting: 현재 얼마나 많은 클 라 이언 트 가 서버 의 응답 을 기다 리 고 있 습 니까?
    주소 재 작성
    vim /usr/local/nginx/conf/nginx.conf
    
    server {
            listen       80;
            server_name  localhost;
    #rewrite /a.html  /b.html;            
    #  a.html    b.html
     
    #rewrite /a.html  /b.html  redirect;            
    #  a.html    b.html(     )
      
    #  192.168.0.5       www.ccc.cn
    #rewrite ^/ http://www.ccc.cn/;
     
    #rewrite ^/(.*)$ http://www.dd.cn/$1;
    #      (  192.168.0.5/     ,    www.dd.cn/      )
    location / {
        root   html;
    index  index.html index.htm;
    }
    #  ,~        ,*          
    if ($http_user_agent ~* firefox) {            //     firefox   
    rewrite ^(.*)$ /firefox/$1;
    #  curl                
    }
    
    

    주소 재 작성 형식 [총 결] 이전 주소 새 주소 재 작성 [옵션];last 다른 rewrite break 를 읽 지 않 고 다른 문 구 를 읽 지 않 습 니 다. redirect 요청 을 끝내 고 permament 로 영구적 으로 방향 을 바 꿉 니 다.

    좋은 웹페이지 즐겨찾기