- LVS+KeepAlived
-
- (CentOS5.6 2.6.18-238.12.1.el5-x86_64)
-
- [email protected]
-
-

VIP : 192.168.0.6 DRM : eth0 192.168.0.4 DRB : eth0 192.168.0.5 node1 : eth0 192.168.0.7 node1 : eth1 10.0.0.1 node2 : eth0 192.168.0.8 node2 : eth1 10.0.0.2 node3 : eth0 192.168.0.9 node3 : eth1 10.0.0.3 Web1 : eth0 10.0.0.8 Web2 : eth0 10.0.0.9 Web3 : eth0 10.0.0.10 Openfiler: eth0 10.0.0.88 DRM: [[email protected] ~]# cat lvs+keepalived.sh #!/bin/bash for i in lo all eth0 do for j in arp_ignore arp_announce do if [ $j = "arp_ignore" ]; then echo "1" >/proc/sys/net/ipv4/conf/${i}/${j} else echo "2" >/proc/sys/net/ipv4/conf/${i}/${j} fi done done sysctl -p > /dev/null 2>&1 yum -y install ipvsadm tar -zxvf keepalived-1.1.20.tar.gz cd keepalived-1.1.20 ./configure --prefix=/usr --exec-prefix=/usr \ --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share \ --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec \ --localstatedir=/var --mandir=/usr/share/man --infodir=/usr/share/info \ --sharedstatedir=/usr/com \ --with-kernel-dir=/usr/src/kernels/2.6.18-238.12.1.el5-x86_64 ######################################### make && make install cd ../ [[email protected] ~]# sh lvs+keepalived.sh [[email protected] ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { complex.invoke@gmail.com
} notification_email_from [email protected] smtp_server 127.0.0.1 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.6 } } virtual_server 192.168.0.6 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.0.7 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.0.8 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.0.9 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [[email protected] ~]# chkconfig --level 345 keepalived on [[email protected] ~]# service keepalived start DRB: [[email protected] ~]# sh lvs+keepalived.sh [[email protected] ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { complex.invoke@gmail.com
} notification_email_from [email protected] smtp_server 127.0.0.1 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.6 } } virtual_server 192.168.0.6 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.0.7 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.0.8 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.0.9 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [[email protected] ~]# chkconfig --level 345 keepalived on [[email protected] ~]# service keepalived start node1 node2 node3: [[email protected] ~]# cat node.sh #!/bin/bash VIP=192.168.0.6 . /etc/rc.d/init.d/functions case $1 in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP route add -host $VIP dev lo:0 for i in lo all eth0; do for j in arp_ignore arp_announce; do if [ $j = "arp_ignore" ]; then echo "1" >/proc/sys/net/ipv4/conf/${i}/${j} else echo "2" >/proc/sys/net/ipv4/conf/${i}/${j} fi done done sysctl -p > /dev/null 2>&1 ;; stop) ifconfig lo:0 down route del $VIP > /dev/null 2>&1 for i in lo all eth0; do for j in arp_ignore arp_announce; do echo "0" >/proc/sys/net/ipv4/conf/${i}/${j} done done sysctl -p > /dev/null 2>&1 ;; *) echo "Usage: $(basename $0) {start|stop}" exit 1 ;; esac [[email protected] ~]# sh node.sh start [[email protected] ~]# cat squid-install.sh #!/bin/bash mkdir -p /home/squid/{cache,log} ln -s /home/squid /var/spool/squid yum -y install squid chown squid:squid -R /home/squid squid -z squid -s #crontab -e #59 * * * * /usr/sbin/squid -k rotate [[email protected] ~]# sh squid-install.sh [[email protected] ~]# vim /etc/squid/squid.conf acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 3130 acl CONNECT method CONNECT acl purge method PURGE http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny to_localhost http_access allow purge localhost http_access deny purge # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow localhost http_access allow all http_reply_access allow all icp_access allow all miss_access allow all ident_lookup_access deny all reply_body_max_size 0 allow all follow_x_forwarded_for deny all acl_uses_indirect_client on delay_pool_uses_indirect_client on log_uses_indirect_client on http_port 3128 http_port 80 vhost vport icp_port 3130 cache_peer 10.0.0.8 parent 80 0 no-query originserver no-digest round-robin cache_peer 10.0.0.9 parent 80 0 no-query originserver no-digest round-robin cache_peer 10.0.0.10 parent 80 0 no-query originserver no-digest round-robin cache_peer 192.168.0.7 sibling 80 3130 # replace 7 with 8 or 9 on node2 or node3 cache_peer 192.168.0.8 sibling 80 3130 proxy-only no-netdb-exchange cache_peer 192.168.0.9 sibling 80 3130 proxy-only no-netdb-exchange dead_peer_timeout 10 seconds hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_mem 64 MB maximum_object_size_in_memory 5120 KB memory_replacement_policy lru cache_replacement_policy heap LFUDA cache_dir ufs /home/squid/cache 100 16 256 store_dir_select_algorithm round-robin max_open_disk_fds 0 minimum_object_size 0 KB maximum_object_size 20480 KB cache_swap_low 85 cache_swap_high 95 logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh access_log /home/squid/log/access.log squid cache_log /home/squid/log/cache.log cache_store_log none logfile_rotate 10 log_ip_on_direct on mime_table /etc/squid/mime.conf pid_filename /var/run/squid.pid strip_query_terms on diskd_program /usr/lib64/squid/diskd-daemon unlinkd_program /usr/lib64/squid/unlinkd acl QUERY urlpath_regex cgi-bin \? cache deny QUERY refresh_pattern .php$ 1440 20% 10080 refresh_pattern . 0 20% 4320 quick_abort_min 16 KB quick_abort_max 16 KB quick_abort_pct 95 read_ahead_gap 16 KB negative_ttl 5 minutes positive_dns_ttl 6 hours negative_dns_ttl 1 minute range_offset_limit 0 KB minimum_expiry_time 60 seconds store_avg_object_size 13 KB store_objects_per_bucket 20 request_header_max_size 20 KB reply_header_max_size 20 KB request_body_max_size 0 KB via on cache_vary on acl apache rep_header Server ^Apache broken_vary_encoding allow apache refresh_stale_hit 0 seconds relaxed_header_parser on forward_timeout 4 minutes connect_timeout 1 minute peer_connect_timeout 30 seconds read_timeout 15 minutes request_timeout 5 minutes persistent_request_timeout 2 minutes client_lifetime 1 day pconn_timeout 1 minute ident_timeout 10 seconds shutdown_lifetime 30 seconds cache_mgr expertshell
@gmail.com mail_program mail cache_effective_user squid cache_effective_group squid visible_hostname node1 umask 027 minimum_direct_hops 4 minimum_direct_rtt 400 netdb_low 900 netdb_high 1000 netdb_ping_period 5 minutes icp_query_timeout 2000 digest_generation on log_icp_queries on icp_hit_stale on maximum_icp_query_timeout 2000 minimum_icp_query_timeout 5 incoming_http_average 4 incoming_dns_average 4 min_icp_poll_cnt 8 min_dns_poll_cnt 8 min_http_poll_cnt 8 tcp_recv_bufsize 0 bytes balance_on_multiple_ip on [[email protected] ~]# vim nat-iptables.sh #!/bin/bash if (( UID != 0 )); then echo "permission denied, please run as root privilige!" exit 1 fi # global settings IPTABLES="/sbin/iptables" MODPROBE="/sbin/modprobe" INT_NET="10.0.0.0/8" # Flush existing rules and set chain policy setting to DROP for i in F X Z do $IPTABLES -$i $IPTABLES -$i -t nat done for j in INPUT OUTPUT FORWARD do $IPTABLES -P $j ACCEPT done # load modules modules="xt_state ipt_recent xt_tcpudp ipt_MASQUERADE iptable_filter ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack ip_conntrack_ftp ip_conntrack_irc" for mod in $modules do testmod=$( lsmod | grep "$mod" ) if [ "x$testmod" = "x" ]; then $MODPROBE $mod fi done # setting kernel network features for k in ip_dynaddr tcp_syncookies icmp_echo_ignore_broadcasts do echo "1" > /proc/sys/net/ipv4/$k done pq="/proc/sys/net/ipv4/conf/*/" qp="rp_filter log_martians" bd="accept_source_route accept_redirects send_redirects" for u in ${qp} do for v in ${pq}${u} do echo "1" > $v done done for w in ${bd} do for x in ${pq}${w} do echo "0" > $x done done $IPTABLES -t nat -A POSTROUTING -s $INT_NET -o eth0 -j MASQUERADE # forwarding sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf echo "1" > /proc/sys/net/ipv4/ip_forward # save iptables policy: service ip6tables stop chkconfig ip6tables off chkconfig --level 345 iptables on iptables-save > /etc/sysconfig/iptables # restore iptables policy: # iptables-restore < /etc/sysconfig/iptables [[email protected] ~]# sh nat-iptables.sh Openfiler: [[email protected] ~]# fdisk -l | grep ^/dev/sd /dev/sdb1 2048 41943039 20970496 83 Linux /dev/sdc1 2048 41943039 20970496 83 Linux /dev/sdd1 2048 41943039 20970496 83 Linux /dev/sde1 2048 41943039 20970496 83 Linux /dev/sdf1 2048 41943039 20970496 83 Linux /dev/sda1 * 63 208844 104391 83 Linux /dev/sda2 208845 4401809 2096482+ 83 Linux /dev/sda3 4401810 16771859 6185025 83 Linux /dev/sda4 16771860 20964824 2096482+ 5 Extended /dev/sda5 16771923 20964824 2096451 83 Linux [[email protected] ~]# partprobe [[email protected] ~]# mdadm --create --auto=yes /dev/md0 --level=5 \ --raid-devices=4 --spare-devices=1 /dev/sd{b,c,d,e,f}1 [[email protected] ~]# mkfs.btrfs /dev/md0 WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using fs created label (null) on /dev/md0 nodesize 4096 leafsize 4096 sectorsize 4096 size 59.99GB Btrfs Btrfs v0.19 [[email protected] ~]# mkdir /mnt/raid [[email protected] ~]# mount /dev/md0 /mnt/raid [[email protected] ~]# df -Th | grep /dev/md0 /dev/md0 btrfs 60G 56K 60G 1% /mnt/raid [[email protected] ~]# mdadm --detail /dev/md0 | grep -i uuid UUID : bcb160c2:a8409638:71d19d46:74c61ecd [[email protected] ~]# vim /etc/mdadm.conf ARRAY /dev/md0 UUID=bcb160c2:a8409638:71d19d46:74c61ecd [[email protected] ~]# vim /etc/fstab /dev/md0 /mnt/raid btrfs defaults 1 2 [[email protected] ~]# chown apache:apache -R /mnt/raid [[email protected] ~]# vim /mnt/raid/index.php <html> <title>PHP</title> <body> <b>Server: <?php echo $_SERVER[SERVER_ADDR]; ?> <br></b> <b>Path: <?php $dir=`pwd`; echo $dir; ?> <br></b><b>Time: <?php $TM=`date +%F`; $MT=`date +%T`; echo $TM.$MT; ?> </b></body></html> [[email protected] ~]# vim /etc/exports /mnt/raid 10.0.0.0/24(rw,anonuid=48,anongid=48) [[email protected] ~]# service portmap start [[email protected] ~]# service nfs start Web1 Web2 Web3: [[email protected] ~]# mkdir -p /usr/wwwroot/html [[email protected] ~]# showmount -e 10.0.0.88 Export list for 10.0.0.88: /mnt/raid 10.0.0.0/24 [[email protected] ~]# mount -t nfs -o rw,bg,intr,soft,rsize=32768,wsize=32768 10.0.0.88:/mnt/raid /usr/wwwroot/html [[email protected] ~]# yum -y install httpd mysql mysql-server php php-devel php-mysql [[email protected] ~]# sed -i 's#/var/www/html#/usr/wwwroot/html#g' /etc/httpd/conf/httpd.conf [[email protected] ~]# chown apache:apache -R /usr/wwwroot/html [[email protected] ~]# setenforce 0 [[email protected] ~]# service httpd start
转载于:https://blog.51cto.com/expertshell/679208