nfs-utils rpcbind 两软件


在/etc/exports中添加共享目录    权限(all,rw,ro,async sync no_root_squash root_squash all_squash anonudi,anongid user )
showmount -t +共享服务器地址 exportfs -arv 重启nfs      查看共享目录
mount -t nfs -onolock,nfsvers=3 +共享服务器地址的目录 挂载目录地址
umount -l +卸载共享目录                             目录权限
vi /etc/init.d/nfs    修改rpcnfsdocunt=8 改成32
echo 252144 >/proc/sys/net/core/rmem-default/max/wmem_default/wmem_max


pure-ftpd
--without-inetd
--with-altlog
--with-puredb
--with-throttling
--with-peruserlimits 
--with-tls


mkdir /usr/local/pure-ftpd/etc
cp /usr/local/src/pure..../configuration/pure-ftpd.conf /usr/local/pure-ftpd/etc/
cp /usr/local/src/pure..../configuration/pure-config.pl /usr/local/pure-ftpd/sbin/
chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf 启动pureftpd服务
创建共享目录  修改目录用户权限
mkdir -p /data/www 虚拟用户目录
useradd www 建立系统用户
useradd www -s /sbin/nologin  不能这样建用户 否则登陆不起出现interrupt
/usr/local/pureftpd/bin/pure-pw useradd ftp -uuser2 -d /data/www 创建虚拟用户和系统用户关联
/usr/local/pureftpd/bin/pure-pw mkdb 创建虚拟用户数据库
/usr/local/pureftpd/bin/pure-pw list 查看虚拟用户列表
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
ln -s /usr/local/pureftpd/sbin/pure-ftpd /usr/sbin



vsftpd 如何创建虚拟用户
yum -y install vsftpd* pam* db4*
useradd cisco -s /sbin/nologin 建立虚拟账号相关联的系统账号
vim /tmp/cisco.login 建立虚拟用户文件(包括用户名和密码)
chmod 600 /tmp/cisco.login 修改虚拟用户文件权限
db_load -T -t hash -f /tmp/cisco.login /tmp/cisco.login.db 把虚拟用户文件生成系统识别的二进制库文件
mkdir /tmp/cisco.conf 建立虚拟用户配置目录
cd /tmp/cisco.conf
vi test 這个文件名必须和建立的虚拟用户文件中的用户必须一致
local_root=/home/cisco/test
anonynous_enable=no
write_enable=no
local_umask=022
anon_upload_enable=no
anon_mkdir_write_enable=no
idle_session_timeout=600
data_connection_timeout=120
max_clients=120
max_per_ip=5
local_max_rate=500


mkdir /home/cisco/test
chown -R cisco:cisco /home/cisco/test
修改验证文件
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/tmp/cisco.login
account sufficient /lib64/security/pam_userdb.so db=/tmp/cisco.login


vi /etc/vsftpd/vsftpd.conf
guest_enable=yes
guest_username=cisco (建立的系统用户名)
virtual_use_local_privs=yes
user_config_dir=/tmp/cisco.conf
启动服务


samba服务器:
yum -y install samba samba-client
vi /etc/samba/smb.conf
共享不要密码
[cisco]
comment=share all
path=/tmp/sambadir
browsenable =yes
public=yes
writable=no
security=share
workgroup=WORKGROUP
window客服的:\\ip 客服端
linux客服端:smbclient//ip/共享目录名
共享目录也可以挂载需安装:cifs-utifs
mount -t cifs //ip/共享目录名 挂载点
共享需要密
security = user
[cisco]
comment=share for users
path=/tmp/smbdr
public=yes
browseable=yes
writable=no


添加用户smb
pdbedit -a smb


smbclient -U smb //ip/共享目录名
mount -t cifs -ousername=smb,password=cisco //ip/共享目录名


squid 安装配置  正向代理
 添加:cache_mem 128 MB 设置内存大小
打开cache_dir目录 并设定缓存目录的大小   cache_dir ufs /data/cache 1024 16 256
缓存对象:refresh_pattern \.(jpg|gif|png|css|js|mp3|mp4 ) 1440 20 2880 ignore-reload
抓包工具 tcpdump
tcpdump -nn port 3128


acl http proto http
acl good_domain dstdomain .cisco.com .sina.com .sohu.com
http_access allow good_domain
http_access deny !good_domain


squid的反向代理
修改http_port 80 accel vhost vport
cache_peer 访问网站ip parent 80 0 originserver name=a
cache_peer_domain a www.baidu.com


透明代理 其他配置和正向代理一样
http_port 3128 transparent
设置防火墙规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -s 192.168.19.0/24 --dport 80 -j REDIRECT --to-ports 3128


squid 日志不记录图片、js、css等静态文件
在squid.conf中加入:
acl nolog urlpath_regex -i \.css \.js \.swf \.jpg \.gif \.png \.jpeg
access_log /var/log/squid/access.log common !nolog 其中common 为日志格式


如何查看squid的缓存命中率
使用命令:  squidclient -h host -p port mgr:info
比如:  /usr/local/squid/bin/squidclient -h 127.0.0.1 -p 8080 mgr:info
使用这个命令的前提是,你在你的squid.conf 中配置了相关的选项
acl manager proto cache_object
http_access allow manager
squid的用户认证配置   自己查询
删除squid缓存
如何清除squid 缓存
1 首先在squid 的主配置文件中添加acl 列表,并允许受信任的主机有权限清除缓存  
  acl  managercache   src 192.168.1.145 127.0.0.1
  acl   Purge  method PURGE
  http_access allow  managercache Purge
  http_access  deny Purge
2 清除squid 中一条缓存
  /usr/local/squid/bi/squidclient -h  192.168.1.145 -p80 -m PURGE http://www.linuxidc.com/404.html
3 批量清除squid 缓存中的文件
   脚本 如下
    #!/bin/sh
   squidcache_path="/usr/local/squid/var/cache/"
   squidclient_path="/usr/local/squid/bin/squidclient"
   grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
   for url in `cat cache_list.txt`; do
   $squidclient_path -m PURGE -p80 $url
   done
   注:squidcache_path 是squid 缓存路径;squidclient_path 是squidclient 命令的 路径; -p  是指定squid 监听的端口;并给clearcache.sh    执行权限;#chmod +x  clearcache.sh
4  使用方法
   用法:
  1、清除所有Flash缓存(扩展名.swf):
      ./clear_squid_cache.sh swf
  2、清除URL中包含sina.com.cn的所有缓存:
    ./clear_squid_cache.sh sina.com.cn
  3、清除文件名为zhangyan.jpg的所有缓存:
     ./clear_squid_cache.sh zhangyan.jpg


squid 防盗链
acl has_referer referer_regex.
acl allow_referer referer_regex -i baidu\.com
acl allow_referer referer_regex -i google\.com
acl allow_referer referer_regex -i yahoo\.com
acl allow_referer referer_regex -i sina\.com
acl allow_referer referer_regex -i sohu\.com
http_access allow !has_referer
http_access deny !allow_referer
deny_info http://img1.test.com/p_w_picpaths/noposter.jpg allow_referer 拒绝的网站返回当前指定的网页


tomcat的安装
官网下载: wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
解压,mv /apache-tomcat-7.0.69 /usr/local/tomcat
cp -pv  /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
chmod 755 !$
chkconfig --add tomcat
chkconfig tomcat on
/etc/init.d/tomcat start      tomcat先停在启动     service tomcat stop;service tomcat start
在vi/etc/init.d/tomcat
#chkconfig: 2345 63 37
. /etc/init.d/functions
JAVA_HOME=/usr/local/jdk版本号 需大写否则会出现启动错误
CATALINA_HOME=/usr/local/tomcat
tomcat配置新的主机
修改connector port 8080 为80  需停止后启动才能生效
在</host>下添加新的主机 
<Host name="www.111.com网站名" appBase="/data/tomcatweb"    jsp存放的目录 "
 unpackWARs="false" autoDeploy="true" xmlValidation="false"
 xmlNamespaceAware="false">
 <Context path="" docBase="" debug="0" reloadable="true" crossContext="true"/>
 </Host>


#注意将docBase的路径,这边是放空的形式,表示根目录在appBase指定的目录下。切记:不可以为.或者./这样的形式。
#<Context path="" docBase="" debug="0" reloadable="true" crossContext="true"/>
#里面的docBase 如果是直接放空的话,那网站根目录就是appBase所指向的路径即"/data/tomcatweb" 如果指定为./ROOT #那就是/data/tomcatweb/ROOT。这样你就要将相应的网站脚本放到相应的目录中去。


测试脚本:
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>




resin的安装
./configure --prefix=/usr/local/resin   --with-java-home=/usr/local/jdk1.8.0_31
 make  && make install
 /etc/init.d/resin start
vim /usr/local/resin/conf/resin.xml
改配置文件
jdk的安装:
vi /etc/profile.d/java.sh
JAVA_HOME=/usr/local/jdk版本号
JAVA_BIN=/usr/local/jdk版本号/bin
JRE_HOME=/usr/local/jdk版本号/jre
PATH=$PATH:/usr/local/jdk版本号/jre/bin:/usr/local/jdk版本号/bin
CLASSPATH=/usr/local/jdk版本号/jre/lib:/usrl/local/jdk版本号/lib:/usr/local/jdk版本号/jre/lib/charsets.jar
export java_home jave_bin jre_home path classpath


. /etc/profile.d/java.sh    source /etc/profile.d/java.sh
java -version


在 Ubuntu 12.04 LTS 上通过 Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm
Ubuntu下部署Solr(4.4)到Tomcat(7.0.53) http://www.linuxidc.com/Linux/2014-05/101443.htm
Linux下Apache与多个Tomcat 集群负载均衡 http://www.linuxidc.com/Linux/2012-01/51731.htm Nginx Tomcat
集群负载均衡解决笔记 http://www.linuxidc.com/Linux/2013-07/86827.htm
实例详解Tomcat组件安装+Nginx反向代理Tomcat+Apache使用mod_jk和mod_proxy反向代理和负载均衡 http://www.linuxidc.com/Linux/2013-06/85290.htm
Apache+Tomcat 环境搭建(JK部署过程) http://www.linuxidc.com/Linux/2012-11/74474.htm
Linux Resin 安装配置 http://www.linuxidc.com/Linux/2013-06/86092.htm
Nginx+Resin高性能Java平台搭建 http://www.linuxidc.com/Linux/2012-12/77078.htm
搭建Web服务器(JDK+Nginx+Resin整合) http://www.linuxidc.com/Linux/2012-08/69197.htm
Resin服务器使用cookie注意事项 http://www.linuxidc.com/Linux/2012-09/70595.htm
CentOS 5 安装 Resin 4 http://www.linuxidc.com/Linux/2012-08/67277.htm
tomcat自动检查并重启脚本 http://www.lishiming.net/thread-797-1-2.html
处理tomcat不必要的日志 http://www.lishiming.net/thread-406-1-1.html
配置tomcat的内置监控 http://www.lishiming.net/thread-402-1-1.html
配置tomcat启动时的优化参数 http://www.lishiming.net/thread-401-1-1.html
配置tomcat的进程数控制 http://www.lishiming.net/thread-400-1-1.html
配置tomcat容器的access.log访问日志 http://www.lishiming.net/thread-399-1-1.html


mysql的主从复制   切记不要再从上修改数据  库名要一致  主从数据库必须一样


1 先安装mysql
2 辅助cp -r /usr/local/mysql /usr/local/mysql_slave
3 cd /usr/local/mysql_slave     cp /etc/my.cnf .
4 vi my.cnf    该端口 3307 tmp=/tmp/mysql_slave.sock   datadir=/data/mysql_slave
5 ./script/mysql_install_db --user=mysql --datadir=/data/mysql_slave
6 cd /etc/init.d    cp mysqld mysqld_slave     vi mysqld_slave   basedir=/usr/local/mysql_slave   datadir=/data/mysql_slave   conf=$basedir/my.cnf


登陆主数据库并建立复制数据库
mysql的登陆方式
mysql -S /tmp/mysql.sock 表示登陆的那个数据库  mysql -S /tmp/mysql_slave.sock    通过sock来登陆数据库
mysql -h主机 -port 3306  通过主机登陆
绝对路径登陆 /usr/local/mysql/bin/mysql
1.建立数据库  create database db1;
mysqldump -S /tmp/mysql.sock mysql > 1.sql
mysql -S /tmp/mysql.sock db1 < 1.sql       show tables; 查看表
在主数据库
vi /etc/my.cnf
该server-id =1
auto-increment-increment = 3  //每次增长3,3个mysql都一样
auto-increment-offset = 1  //设置自动增长的字段的偏移量,即初始值为1,msyql2设为2,mysql3设为3
log-bin=cisco 打开   会在/data/mysql下生成一些以cisco开头的文件
binlog-do-db=db1 表示只针对db1这个数据库同步
binlog-ignore-db=mysql  表示同步除mysql以外的数据库
replicate-do-db=db1 这个主要用于从服务器上
auto-increment-increment=2 主要用于互为主从的情况
auto-increment-offset=1    主要用于互为主从的情况
binlog-ignore-db=db1 表示指针对除db1以外的用户同步
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by 'cisco'; 表示对备份用户锁定权限
flush privileges; 刷新权限 flush tables with read lock; 锁定用户权限 show master status;
注:二都只有server-id不同和 auto-increment- offset 不同     auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到三个实例,所以值设为3。

vi /usr/local/mysql_slave/my.cnf
修改server-id=11 主从不能一致
log_bin=mysql_bin 可以不用开启 可以自动修改
replicate-do-db=db1 表示只和db1数据库同步  这个主要用于从服务器上
replicate-ignore-db=db1 表示除db1外的数据库同步 这个主要用于从服务器上
建立数据库  create database db1;
mysqldump -S /tmp/mysql.sock mysql > 1.sql                       mysql -S /tmp/mysql_slave.sock -e "create database db1"
mysql -S /tmp/mysql.sock db1 < 1.sql
slave stop;
change master to master_host='127.0.0.1',master_port=3306(默认),master_user='repl',master_password='cisco',master_log_file='cisco.000001' 是show master status 中的数据,master_log_pos=331;
slave start
show slave status \G 查看主从配置情况
select database ();查看当前数据库
一主一或多从总结  数据库以主已从注意事项:1.有相同的数据库名  2。server_id不能相同。3从数据库在进行数据拉的时候,以主数据库建立的用户名,密码,bin_log为准。4.主在建立从复制对象时,ip写从的,从在拉数据时 ip写主的。
测试主从时候复制数据正常:unlock tables;把表解锁;
互为主从或环形主从注意要点:1:主在建立从复制对象时,ip写从的,从在拉数据时 ip写主的。2:在作为从的时候要slave stop。


数据库读写分离(mysql-proxy):
1.主从配置(见以上操作步骤)
2.安装lua包:如出错需安装:yum install -y readline-devel ncurses-devel  libreadline-dev
vi src/Makefile 在 CFLAGS= -O2 -Wall $(MYCFLAGS) 这一行记录里加上-fPIC,更改为 CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS) 来避免编译过程中出现错误。
make linux ; make install
mysql-proxy代理:
wget http://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
tar -vxf http://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local/mysql-proxy
2)准备读写分离的LUA策略脚本
直接复制mysql-proxy提供的样例策略即可:
[root@proxy mysql-proxy]#cd /usr/local/mysql-proxy
[root@proxy mysql-proxy]#cp share/doc/mysql-proxy/rw-splitting.lua ./
[root@proxy mysql-proxy]#bin/mysql-proxy -P 代理服务器ip:3306 \
> -b master ip:3306 \
> -r slave ip :3306 \
> -s rw-splitting.lua &
3)启动mysql-proxy代理服务
主要命令选项:
    -P(大写):指定代理监听的IP地址、端口
    -r:指定读服务器的IP地址、端口
    -b:指定写服务器的IP地址、端口
    -s:指定lua脚本文件
    --keepalive:如果服务进程崩溃,尝试重启此进程


http://blog.csdn.net/e421083458/article/details/19697701



yum -y install bind 主文件bind-utils测试工具 bind-libs库文件 bind-chroot伪装
named-checkconf   named-checkzone "dns服务器名" 全称服务器名  rndc reload =/etc/init.d/named restart
检测反区域解析库文件,语法格式命令文件路径域名是否正确。
named-checkconf jie.com /var/named.jie.com.zone


dig -t A(正向)X(反向) 资源记录名称 @服务器ip
host -t A 资源记录名称  服务器ip
nslookup 资源记录名称  服务器ip
资源记录名称包括:NS,A,PTR
DNS服务器:主,从,缓存,转发。udp 53端口 tcp用于dns服务器之间通信。
DNS记录的类型:A:Address 域名向ip地址转换的记录;PTR:Printer ip地址向域名转换的记录;
NS:代表域内的dns服务器;MX:代表域内的邮件服务器;
CNAME:域名的别名;SOA:start of authority用于标示域内主DNS服务器。
3、打开/etc/named.rfc1912.zones文件,添加一个区域。
type: 用于定义区域类型,此时只有一个DNS服务器,所以为master,type可选值为:hint(根的)|master(主的)|slave(辅助的)|forward(转发)
named.conf的配置语法:
acl 定义访问控制列表
option 定义全局选项:directory:定义服务器数据库文件的工作目录
view 定义域名空间的一个视图 zone定义一个区声明 include 包含其他文件到配置文件 controls 定义rndc命令使用的控制通道,若省略,则只允许经过rndc.key认证的127.0.0.1的rndc的控制。
根域服务器指向文件:/var/named/named.ca
本地正向解析区文件:/var/named/localhost.zone
本地反向解析区文件:/var/named/named.local
域正向解析区文件:/var/named/正向解析区文件名
域反向解析区文件:/var/named/反向解析区文件名
主配置文件:
allow-query{any;}表示所有人都能查询这台服务器。
forwarders{ip;}如果本地数据库没有请求数据,将由此ip进行查询
DNS配置详解:http://www.linuxidc.com/Linux/2013-08/88986.htm
DNS缓存服务器:
在主配置文件中有forwarders{解析地址;}和recuesion yes 就可以了
测试方式:dig -t A fqdn@解析服务器ip 或host -t A FQDN 解析服务器ip
nslookup fqdn 服务器ip
DNS主从服务器:
在vi /etc/named.rfc1912.zones中添加正向解析和反向解析区域


acl "acl1" {
        192.168.139.0/200; 192.168.1.0/200
};
view localhost_resolver { //定义一个视图
        match-clients    { any; }; //查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的ip可以递归查询了
        match-destinations { any; }; //查询者的目标地址,这里也可以写成{ localhost; acl1; }
        recursion yes;  //设置进行递归查询
        include "/etc/named.rfc1912.zones"; //包含文件,这里也就是载入/etc/named.rfc1912.zones
};


6
$TTL:设置有效地址解析记录的默认缓存时间;
$ORIGIN:表示该zone文件用来描述的域(domain)名称,说明下面的记录源出何处;
systemctl status named.service 用于从服务器验证。
rndc常用命令:
status #查看DNS状态
reload #重新加载配置文件
reload zone_name #重新加载指定区域
reconfig  #重读配置文件并加载新增的区域
querylog  #关闭或开启查询日志
flush  #清空服务器的缓存
flushname name  #清空指定名称相关的缓存
trace  #打开debug, debug有级别的概念,每执行一次提升一次级别
trace LEVEL  #指定 debug 的级别, trace 0 表示关闭debug
用rndc:
1、生成密钥文件
命令:
rndc-confgen  > /etc/rndc.conf或者rndc-confgen -r /dev/urandom  > /etc/rndc.conf
主配置文件是通过include关键字来查找区域配置文件,区域配置文件的正反区域的解析文件是通过在区域配置文件的zone关键字定义的,区域解析文件路径的是在主配置文件里directory关键字定义的,区域解析文件的文件名是区域配置文件中zone关键字里面的file关键字定义的


ha.cf的配置文件
chmod 600 /etc/authkeys
hosts文件用于存放ip与地址的对应关系。
keepalive 2 多长时间去探测一次
deadtime 30 如果30s不通就认为死机
warntime 10 10s不通会发出一个警告
initdead 60对端服务器启动预留时间间隔
udpport 694
ping  外网网关
流动vip      与外网在同一 网段
检测ip       ucast eth1 对端内网ip
外网ip      
备份服务器只修改单播检测ip



选项:
-A 添加一个虚拟服务器,使用IP地址、端口号、协议来唯一定义一个虚拟服务器
-E 编辑一个虚拟服务器
-D 删除一个虚拟服务器
-C 清空一个虚拟服务器表
-R 从标准来输入中还原虚拟服务规则
-S 保存虚拟服务规则至标准输出,输出的规则可以使用-R导入还原
-a 在虚拟服务中添加一台真实服务器
-e 在虚拟服务中编辑一台真实服务器
-d 在虚拟服务中减少一台真实服务器
-L 显示虚拟服务列表
-t 使用TCP服务,该参数后需要跟主机与端口信息
-u 使用UDP服务,该参数后需要跟主机与端口信息
-s 指定LVS所采用的调度算法
-r 设置真实服务器IP地址与端口信息
-g 设置LVS工作模式为DR直连路由模式
-i 设置LVS工作模式为TUN隧道模式
-m 设置LVS工作模式为NAT地址转换模式
-w 设置指定服务器的权重
-c 连接状态,需要配合-L使用
-n 数字格式输出


LVS服务器配置(nat)调度器 dr=需要两块网卡(外内)     后端:一块内网,网关为dr的内网卡;
dr上            调度器安装:yum -y install ipvsadm   后端服务器安装:服务
打开转发功能
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/defaults/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
iptables -t nat -A POSTROUTING -s 内网ip -j MASQUERADE
ipvsadm -A -t 外网ip:80 -s (w)rr
ipvsadm -a -t 外网ip:80 -r 内网ip:80 -m(-w)
ipvsadm -ln 查看当前虚拟服务器表
ipvsadm -C 清空当前列表
iptables -e -a  外网ip:80 -r 内网ip:80 修改参数


LVS服务器配置(DR)每个网卡都需要公网ip
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.11.100
rs1=192.168.11.160
rs2=192.168.11.20
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1


sr:
vip 192.168.11.100
ifconfig lo:o $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip  lo:o
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
sr1:
vip 192.168.11.100
ifconfig lo:o $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip  lo:o
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce


LVS+KEEPALIVED
前面的lvs虽然已经配置成功也实现了负载均衡,但是我们测试的时候发现,当某台real server把httpd进程停掉,那么director照样会把请求转发过去,这样就造成了某些请求不正常。所以需要有一种机制用来检测real server的状态,这就是keepalived。它的作用除了可以检测rs状态外,还可以检测备用director的状态,也就是说keepalived可以实现ha集群的功能,当然了也需要一台备用director.
备用director也需要安装一下keepalived软件
yum install -y keepalived
安装好后,编辑配置文件 
vim /etc/keepalived/keepalived.conf   //加入如下:
vrrp_instance VI_1 {
     state MASTER   #备用服务器上为 BACKUP
     interface eth0
     virtual_router_id 51
     priority 100  #备用服务器上为90
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.31.110
     }
 }
 virtual_server 192.168.31.110 80 {
     delay_loop 6                  #(每隔10秒查询realserver状态)
     lb_algo wlc                  #(lvs 算法)
     lb_kind DR                  #(Direct Route)
     persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
     protocol TCP                #(用TCP协议检查realserver状态)


     real_server 192.168.31.100 80 {
         weight 100               #(权重)
         TCP_CHECK {
         connect_timeout 10       #(10秒无响应超时)
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
     }
 real_server 192.168.31.101 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
      }
 }


以上为主director的配置文件,从director的配置文件只需要修改
state MASTER  -> state BACKUP      priority 100 -> priority 90
配置完keepalived后,需要开启端口转发(主从都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然后,两个rs上执行 /usr/local/sbin/lvs_dr_rs.sh 脚本
 最后,两个director上启动keepalived服务(先主后从):
/etc/init.d/keepalived start
另外,需要注意的是,启动keepalived服务会自动生成vip和ipvsadm规则,不需要再去执行上面提到的/usr/local/sbin/lvs_dr.sh 脚本。



cacti  nagios   zabbix 三者的区别:
cacti 重图形,有数据历史,需用到数据库支持,支持web配置,默认不支持告警,可以加插件;
nagios重状态和结果,没有数据历史,不成图像,不支持web配置,可以自己开发脚本定制个性化监控,支持多种插件;
zabbix有数据历史,可成图像,支持web配置,可以自动发现;


cacti 安装的一般步骤
监控机上
1  安装epel
2 yun -y install httpd php php-mysql php-gd mysql mysql-server mysql-devel libpng-devel libpng libjpeg libjpeg-devel cacti rrdtool net-snmp net-snmp-utils
3 /etc/init.d/mysqld start /etc/init.d/httpd start /etc/init.d/snmpd start
4 vi /etc/http/conf.d/cacti.conf  编辑http配置文件中deny from all 该成 allow from all  deny from localhost--all
5 创建数据库 create database cacti;  grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti';
6 导cacti的数据库
mysql -u root cacti < /usr/share/doc/cacti/cacti.sql
7修改cacti的配置文件:使 /usr/share/cacti/include/conf.php 的参数和数据库的参数保持一致
8 执行/usr/bin/php /usr/share/cacti/poller.php命令。 用于生成图像
9 修改时区 vi /etc/php.ini
date.timezone='Asia/Chongqing'
10 crontab -e
*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php


受控机上安装net-snmp*
修改vi /etc/snmp/snmpd.conf
修改syslocation 可以写本机地址,syscontact Root +邮箱
在添加监控机的时候未出现网卡  vi /etc/snmp/snmpd.conf
view  systemview  included   .1.3.6.1.2.1.1
修改为:view   systemview  included   .1.3.6.1.2.1或.1
关闭防火墙!!!!!



nagios安装的一般步骤 服务器上
安装epel-release包
yum -y install httpd nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
设置登录名和密码    htpasswd -c /etc/nagios/nag.ps
检测文件的正确性 nagios -v /etc/nagios/nagios.cfg
启动配置。/etc/init.d/nagios /etc/init.d/httpd
在客服端输入:http://ip/nagios


nagios客服端:yum -y install nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
vim /etc/nagios/nrpe.cfg  找到“allowed_hosts=127.0.0.1” 改为 “allowed_hosts=127.0.0.1,192.168.0.11” 后面的ip为服务端ip; 找到” dont_blame_nrpe=0” 改为  “dont_blame_nrpe=1”
启动客户端 /etc/init.d/nrpe start




3. 监控中心(192.168.0.11)添加被监控主机(192.168.0.12)
cd /etc/nagios/conf.d/
 vim 192.168.0.12.cfg                   //加入:
define host{
         use                     linux-server           
         host_name               192.168.0.12
         alias                       0.12
         address                 192.168.0.12
         }


 define service{
         use                     generic-service
         host_name               192.168.0.12
         service_description     check_ping
         check_command           check_ping!100.0,20%!200.0,50%
         max_check_attempts 5
         normal_check_interval 1
 }


 define service{
         use                     generic-service
         host_name               192.168.0.12
         service_description     check_ssh
         check_command           check_ssh
         max_check_attempts      5    ;当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警
         normal_check_interval 1   ;重新检测的时间间隔,单位是分钟,默认是3分钟
         notification_interval  60 ;在服务出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你认为,所有的事件只需要一次通知就够了,可以把这里的选项设为0。
}


define service{
         use                     generic-service
         host_name               192.168.0.12
         service_description     check_http
         check_command           check_http
         max_check_attempts      5
         normal_check_interval   1
 }
注。这三个服务不依赖与nrpe协议。
客服端上:yum -y install nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe
修改配置文件   vi /etc/nagios/nrpe.cfg
该allow_host=本机ip,服务端的ip     dont_blame_nrpe=1


出现页面报错 “It appears as though you do not have permission to view information for any of the hosts you requested。。。vi /etc/nagios/cgi.cfg      use_authentication=1 改为0   service nagios reload


监控磁盘:
继续添加服务
 服务端vim /etc/nagios/objects/commands.cfg
增加:define command{
         command_name    check_nrpe
         command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
         }
继续编辑 vim /etc/nagios/conf.d/192.168.0.12.cfg
增加如下内容:define service{
         use     generic-service
         host_name       192.168.0.12
         service_description     check_load
         check_command           check_nrpe!check_load
         max_check_attempts 5
         normal_check_interval 1
}
define service{
         use     generic-service
         host_name       192.168.0.12
         service_description     check_disk_hda1
         check_command           check_nrpe!check_hda1
         max_check_attempts 5
         normal_check_interval 1
}
 define service{
         use     generic-service
         host_name       192.168.0.12
         service_description     check_disk_hda2
         check_command           check_nrpe!check_hda2
         max_check_attempts 5
         normal_check_interval 1
 }
说明:  check_nrpe!check_load :这里的check_nrpe就是在commands.cfg刚刚定义的,check_load是远程主机上的一个检测脚本在远程主机上vim /etc/nagios/nrpe.cfg 搜索check_load,这行就是在服务端上要执行的脚本了,我们可以手动执行这个脚本把check_hda1更改一下:/dev/hda1 改为 /dev/sda1
再加一行command[check_hda2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda2
客户端上重启一下nrpe服务: service nrpe restart服务端也重启一下nagios服务: service nagios restart
 配置告警
vim /etc/nagios/objects/contacts.cfg //增加:define contact{
        contact_name               123
        use                             generic-contact
        alias                           aming
        email              lishiming2009@139.com
}
define contact{
        contact_name               456
        use                             generic-contact
        alias                            aaa
        email              aminglinux@139.com
 }
define contactgroup{
        contactgroup_name           common
        alias                        common
        members                          123,456
        }
然后在要需要告警的服务里面加上contactgroup
 define service{
         use     generic-service
         host_name       192.168.0.12
         service_description     check_load
         check_command           check_nrpe!check_load
         max_check_attempts 5
         normal_check_interval 1
         contact_groups        common
         notifications_enabled  1    ;是否开启提醒功能。1为开启,0为禁用。一般,这个选项会在主配置文件(nagios.cfg)中定义,效果相同。
        notification_period   24x7   ;发送提醒的时间段。非常重要的主机(服务)我定义为7×24,一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论什么问题发生,都不会发送提醒。       
         notification_options:w,u,c,r   ;这个是service的状态。w为waning, u为unknown, c为critical, r为recover(恢复了),类似的还有一个  host对应的状态:d,u,r   d = 状态为DOWN, u = 状态为UNREACHABLE , r = 状态恢复为OK,需要加入到host的定义配置里。
}
参考:
调用短信接口   http://www.aminglinux.com/bbs/thread-7380-1-1.html
整合微信  http://www.aminglinux.com/bbs/thread-7917-1-1.html
6.配置图形显示 pnp4nagios (请自行演示,课上不演示)
 (1)安装
yum install pnp4nagios rrdtool


(2)配置主配置文件
vim /etc/nagios/nagios.cfg  //修改如下配置
process_performance_data=1   
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
enable_environment_macros=1    
复制代码修改commands.cfg
vim /etc/nagios/objects/commands.cfg  //注释掉原有对process-host-perfdata和process-service-perfdata,重新定义
define command { 
   command_name    process-service-perfdata 
   command_line    /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl 

define command { 
     command_name    process-host-perfdata 
  command_line    /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA 

复制代码
 (4)修改配置文件templates.cfg
 vim /etc/nagios/objects/templates.cfg define host {
         name       hosts-pnp
         register   0
         action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
         process_perf_data               1
}
 define service {
         name       srv-pnp
         register   0
         action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
         process_perf_data               1
 }
(5)修改host和service配置
vim /etc/nagios/conf.d/192.168.0.12.cfg
把 “define host{
         use                     linux-server”
改为:
define host{
         use                     linux-server,hosts-pnp
修改对应的service,比如把
define service{
         use     generic-service
         host_name       192.168.0.12
         service_description     check_disk_hda1
         check_command           check_nrpe!check_hda1
         max_check_attempts 5
         normal_check_interval 1
 }
改为:
define service{
         use     generic-service,srv-pnp
         host_name       192.168.0.12
         service_description     check_disk_hda1
         check_command           check_nrpe!check_hda1
         max_check_attempts 5
         normal_check_interval 1
 }
(6) 重启和启动各个服务:
service nagios restart
 service httpd restart
 service npcd start
 (7) 访问测试两种访问方法:ip/nagios/           ip/pnp4nagios/





zabbix的一般操作步骤
1 安装zabbix
 yum install -y epel-release
安装rpm包的lamp环境 yum install -y  httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring
安装zabbix服务端:yum install  zabbix20 zabbix20-agent zabbix20-server  zabbix20-server-mysql zabbix20-web zabbix20-web-mysql net-snmp-devel
 /etc/init.d/zabbix-server start; /etc/init.d/zabbix-agent start
 /etc/init.d/httpd start;
修改一下mysql配置文件
vim /etc/my.cnf    //修改或增加如下内容
[mysql]
 default-character-set = utf8
 [mysqld]
 character_set_server = utf8
启动mysql服务
/etc/init.d/mysqld start
建库,导入数据
mysql -uroot -p -e  "create database zabbix"
 mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/schema.sql
 mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/p_w_picpaths.sql
 mysql -uroot -p --default-character-set=utf8  zabbix < /usr/share/zabbix-mysql/data.sql


mysql -uroot -e "grant all privileges on zabbix.* to 'zabbix@localhost' identified by 'zabbix'"
vi /etc/zabbix/zabbix_server.conf
修改:DBpasswd=zabbix
验证:DBSocket=/var/lib/mysql/mysql.sock                 ls /var/lib/mysql/mysql.sock;
 2.网页安装zabbix
浏览器访问 http://ip/zabbix, 默认会有“It is not safe to rely on the system‘s timezone settings ”这样的警告信息,需要vim /etc/php.ini 设置 date.timezone=“Asia/Shanghai     America/Los_angeles”    点next
解决相关的报错信息,点retry  (vim /etc/php.ini)
输入mysql相关信息, 首先要测试一下,如果不通过,则需要调试,测试通过后,点next
 Name 写127.0.0.1,(可以自定义)点next,再点next,最后点finish
默认管理员账号为 admin:zabbix
这时会遇到“zabbix server is not running”这样的错误,需要编辑一下 /etc/zabbix/zabbix_server.conf ,配置DBUser, DBPassword


3. 接入要监控的主机
 在客户端上yum install zabbix20-agent
 vim /etc/zabbix_agentd.conf //更改Server=服务端ip; ServerActive=0.0.0.0:10050; Hostname=aming(自定义,但要唯一)
启动客户端 /etc/init.d/zabbix-agent start
服务端上命令行测试:zabbix_get -s 客户端ip -p10050 -k "system.hostname"
在web界面下,点”configuration” --> “host” --> 右上角点”Create Host”  其中host name,  visible name自定义,可以选择groups,这里默认即可,ip address 写入客户端ip
配置监控项目模板:点“templates”, 点add, 在弹出的小窗口中选择Template OS Linux, 然后点select, 最后点save


4自定义templates
 Zabbix自带了很多模板,模板中有很多监控项目,比如CPU、网卡、内存、进程等等。使用系统自带模板有点太多了,所以我们可以自定义模板。点configuration 选择 templates,点右上角的create template
 Template name和Visible name  自定义,Groups 选择templates, 点save
然后我们去挑选一些项目拷贝到该模板下:比如我们找到Template OS Linux 点一下items,选择我们想要的项目,然后在下面选择copy selected to … 然后点go
 Group 选择templates, 找到刚才我们自定义的templates,点copy
点configuration 选择 templates可以看到新建的templates中已经有刚刚我们copy的items了
 我们可以使用和上面相同的方法自定义拷贝Triggers(触发器 ),它用来设置告警的阀值,当然我们也可以自定义编辑它
 监控客户端网卡流量     http://www.apelearn.com/bbs/thread-8091-1-1.html


 5. 配置发邮件
yum install -y sendmail ;
 mkdir -p /home/zabbix/bin
 vim /home/zabbix/bin/baojing.sh //内容:
#! /bin/bash
 echo "$3" |/bin/mail -s "$2" $1
 chmod +x /home/zabbix/bin/baojing.sh
$3 邮件内容  $2主题 $1 收件人
在zabbix_server.conf配置文件中,有参数AlertScriptsPath和ExternalScripts
 AlertScriptsPath=/home/zabbix/bin/ ---用户自定义的media types脚本
ExternalScripts=/home/zabbix/bin/ ---用户自定义的检查的脚本(item)
 这样才能找到你的脚本,因为你在frontend中只是输入脚本的名称,没有路径。
创建mediea types: “Administration" -->”Media types",点击右上角“Create Media Type"其中Description填"baojing” 或其它自定义名称,Type选择"Script",Script填”baojing.sh”然后点”Save”. 
创建user: “Adimistration” --> “Users”在右上角,选择”Users”,点击”Create User”, alias: test1,自定义name和lastname password:123456;group 选择guest,回到上面点一下media,type 选择baojing,send to 写要发送邮件的邮箱,点add, 最后点save
创建action: “configuration” --> actions,右上角“Create Actions”, Name自定义,我这里写”baojing”,其他默认,然后点右侧的“Operations”下的“New”按钮,“Operation Type”选择“Send message”,“Send Message to”选择一个或多个要发送消息的用户组,Send to Users选择我们之前新增的test1, “Send only to”选择baojing , 点一下add
最后点save
zabbix历史记录乱码问题   http://caisangzi.blog.51cto.com/6387416/1313630
zabbix图形中乱码问题    http://www.apelearn.com/bbs/thread-8090-1-1.html
zabbix参考文章 
http://www.iyunv.com/thread-22959-1-1.html
http://waringid.blog.51cto.com/65148/955939/
http://www.linuxidc.com/Linux/2014-11/109909.htm
6期胡湘林同学的分享   http://xianglinhu.blog.51cto.com/5787032/d-6
自定义脚本:   http://www.linuxidc.com/Linux/2013-11/92476.htm



linux安全:1 关闭不要的服务 2 设置防火墙规则 3 文件系统安全 4 禁止不需要的用户登录5 远程用户限制 6 打开系统日志 7 文件系统安全:目录,文件 少使用suid sgid 8.重要的数据的安全和备份
chattr -R +i /bin /boot /lib /sbin
 chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin
 chattr +i /etc/passwd
 chattr +i /etc/shadow
 chattr +i /etc/hosts
 chattr +i /etc/resolv.conf
 chattr +i /etc/fstab
 chattr +i /etc/sudoers
 chattr +a /var/log/messages
 chattr +a /var/log/wtmp