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