Install puppet master
master$ sudo apt-get -y install puppetmaster
Regenerate Master Certificate
master$ sudo service puppetmaster stop
master$ sudo rm -r /var/lib/puppet/ssl
Add master’s name to config
master$ sudoedit /etc/puppet/puppet.conf
add these names under [master] heading
dns_alt_names = puppet, master.local, puppet.khanh.com.vn
Certificate is automatically generated when you start PuppetMaster
master$ sudo service puppetmaster start
Connect from Slave
slave$ sudo apt-get -y install puppet
slave$ sudoedit /etc/puppet/puppet.conf
Add master DNS name under [agent] heading. Puppet will connect to server.
[agent]
server = master.local
Allow puppet slave to start
slave$ sudoedit /etc/default/puppet
Change to yes:
START=yes
Sign Slave Certificate on Master
master$ sudo puppet cert --list
master$ sudo puppet cert --sign slave.example.com
Create Site Manifest and a Module
....
Test Slave get configuration from Master
slave$ sudo puppet agent --test
------------------------
Force agent to regenerate certificate request by generate command
[puppet agent]$ puppet certificate generate web1 --ca-location remote
warning: peer certificate won't be verified in this SSL session
err: Error 400 on SERVER: web1 already has a revoked certificate; ignoring certificate request
err: Try 'puppet help certificate generate' for usage
#It because the revoked certificate still exist in the server, it need to be deleted
[puppet master]$ puppet cert list –all
- web1 (BA:18:D1:86:D6:5E:9E:99:55:39:3D:67:79:BF:BD:D0) (certificate revoked)
[puppet master]$ puppet cert clean web1
#re-run the command, the warning is expected because the request hasn’t been signed by master yet
[puppet agent]$puppet certificate generate web1 --ca-location remote
warning: peer certificate won't be verified in this SSL session
true
#The pending request appears in master
[puppet master]$ puppet cert list
web1 (3B:ED:D9:8D:2F:C2:A1:D3:89:B4:D0:FD:41:7E:5E:0C)
#Sign the certificate
[puppet master]# puppet cert sign web1
Download sysbench from: http://sourceforge.net/projects/sysbench/
Sysbench need mysql-devel installed
# yum install mysql-devel
Following commands to install sysbench
# aclocal
# libtoolize --force --copy
sysbench_installation_root_folder > ./autogen.sh
sysbench_installation_root_folder > ./configure
sysbench_installation_root_folder > make
sysbench_installation_root_folder > make install
Example: Benchmark MySQL
1. Create test table in database test with 1.000.000 records
# sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=mypassword prepare
2. Benchmark MySQL follow command
# sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=mypassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
3. Clean up DB afterwards
# sysbench --test=oltp --mysql-db=test --mysql-user=root --mysql-password=mypassword cleanup
B1: Cài đặt Tomcat
Cài đặt Tomcat phân chia thành các thư mục khác nhau, ví dụ /var/tomcat/serverA và /var/tomcat/serverB. Trong đó các thư mục serverA, serverB cần có những thư mục nội dung và cấu hình sau: bin, lib, conf, logs, temp, webapps, work
Xem thêm: Cách cài đặt Tomcat7
B2: Thay đổi port
Mỗi Instance sẽ lắng nghe trên các port khác nhau, cần phải thay đổi để không bị xung đột. Có 3 port cần phải đổi là
- shutdown port: Port này được dùng bở tiến trình java khi tomcat chạy. Khi script shutdown.sh được thực hiện, tomcat sẽ gửi tín hiện kết thúc thông qua port này. Ví dụ 8005
- connector port: Port dùng để kết nối tới tomcat từ xa (trình duyệt). Ví dụ 8080
- ajp port: Port dùng khi apache httpd server liên lạc với tomcat, sử dụng để tạo loadbalancer. Ví dụ: 8009
Bạn cần sử file conf/server.xml thay đổi port
B3: Tạo init script cho mỗi Instance
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_17/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/tomcat7
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
------------------------
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_17/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_BASE=/usr/share/tomcat7-new
case $1 in
start)
sh $CATALINA_BASE/bin/startup.sh
;;
stop)
sh $CATALINA_BASE/bin/shutdown.sh
;;
restart)
sh $CATALINA_BASE/bin/shutdown.sh
sh $CATALINA_BASE/bin/startup.sh
;;
esac
exit 0
This post will cover installing and basic configuration of apache-tomcat-7.0.30
If you do not already have the Java Development Kit (JDK) installed on your machine, you will need to download and install the required JDK for your platform.
If you do have the JDK installed, you can skip to: Step 2: Download and Install the apache-tomcat-7.0.30
Step 1: Install the JDK
[root@station1 Downloads]# rpm -ivh jdk-7u7-linux-x64.rpm
-->
[root@station1 Downloads]# JAVA_HOME=/usr/java/jdk1.7.0_17
[root@station1 Downloads]# export JAVA_HOME
[root@station1 Downloads]# PATH=$JAVA_HOME/bin:$PATH
[root@station1 Downloads]# export PATH
[root@station1 Downloads]# vim /root/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/java/jdk1.7.0_17/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
#PATH=$PATH:$HOME/bin
#export PATH
Restart or logout and login
[root@station1 Downloads]# echo $JAVA_HOME
/usr/java/jdk1.7.0_17/
Step 2: Download and Unpack apache-tomcat-7.0.30 (or latest)
[root@station1 Downloads]# tar -xzvf apache-tomcat-7.0.30.tar.gz
[root@station1 Downloads]# mv apache-tomcat-7.0.30 /usr/share/
[root@station1 Downloads]# vim /etc/init.d/tomcat
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_17
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.30
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
[root@station1 ~]# chmod 755 /etc/init.d/tomcat
[root@station1 ~]# chkconfig --add tomcat
[root@station1 ~]# chkconfig --level 234 tomcat on
[root@station1 ~]# chkconfig --list tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
[root@station1 ~]# service tomcat stop
Using CATALINA_BASE: /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME: /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME: /usr/java/jdk1.7.0_17
Using CLASSPATH: /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
[root@station1 ~]# service tomcat start
Using CATALINA_BASE: /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME: /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME: /usr/java/jdk1.7.0_17
Using CLASSPATH: /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
[root@station1 ~]# service tomcat restart
Using CATALINA_BASE: /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME: /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME: /usr/java/jdk1.7.0_17
Using CLASSPATH: /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
Using CATALINA_BASE: /usr/share/apache-tomcat-7.0.30
Using CATALINA_HOME: /usr/share/apache-tomcat-7.0.30
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-7.0.30/temp
Using JRE_HOME: /usr/java/jdk1.7.0_07
Using CLASSPATH: /usr/share/apache-tomcat-7.0.30/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.30/bin/tomcat-juli.jar
For logs
[root@station1 ~]# less /usr/share/apache-tomcat-7.0.30/logs/catalina.out
We can now access the Tomcat Manager page at http://127.0.0.1:8080
------------
his is for dual boot os users, there are many who prefers dual boot to keep another OS optional. For any reason if you wish to change boot sequence unlike grub, grub2 requires couple of commands to run.
Here will take example to keep Windows as default boot.
First of all find menuentry for Windows
cat/boot/grub2/grub.cfg |grep Windows
|
result:-
menuentry "Windows 7 (loader) (on /dev/sda1)"--class windows --class os {
|
Set Windows menuentry as default (only entry mentioned in either " or 'from above command)
grub2-set-default "Windows 7 (loader) (on /dev/sda1)"
|
Verify default entry
Generate updated grub.cfg
grub2-mkconfig -o/boot/grub2/grub.cfg
|
Below is to set Fedora as default boot
cat /boot/grub2/grub.cfg |grep Fedora
grub2-set-default "Fedora Linux, with Linux 3.1.0-5.fc16.i686"
grub2-editenv list
grub2-mkconfig -o /boot/grub2/grub.cfg
|
Purpose
This article discusses some of the common questions that arise when migrating virtual machines that utilize Raw Device Mappings (RDMs).
Migrating of virtual machines with RDMs can be performed in three ways:
- Warm migration (vMotion), with the virtual machine powered on.
- Cold migration, with the virtual machine powered off.
- Storage migration (Storage vMotion), with the virtual machine powered on.
Resolution
Trong Linux, file fstab nằm tại thư mục /etc. Bài viết này sẽ tìm hiểu nội dung và cách chỉnh sửa thông tin trong file này và ngụ ý rằng bạn đã biết cơ bản về lệnh mount (xem lại bài “Làm sao để mount/unmount filesystem trong Linux”).
1. Giới thiệu
File cấu hình /etc/fstab chứa thông tin về các thiết bị (phân vùng ổ cứng, CD/DVD, USB, ISO image…) trên máy tính bao gồm:
+ Đường dẫn tới file đại diện cho thiết bị.
+ Mount point: cho biết thiết bị được mount vào thư mục nào.
+ Các tùy chọn (option): chỉ ra thiết bị được mount như thế nào?
v.v..
Nếu bạn không thể truy cập các phân vùng dành cho Windows (NTFS, FAT), hoặc không thể mount ổ DVD, ghi dữ liệu vào USB, đọc file từ ổ mềm… thì có thể chip nhớ trên thiết bị bị lỗi hoặc cũng có thể bạn đã cấu hình file fstab không đúng cách!
fstab là file dạng văn bản (plain text), vì thế bạn có thể mở và chỉnh sửa nó sử dụng bất kỳ công cụ Text Editor nào với điều kiện bạn phải có đặc quyền root để lưu lại những thay đổi. Nếu bạn đang đăng nhập với tài khoản người dùng thông thường thì có thể sử dụng 2 lệnh suhoặc sudo để tạm thời chuyển sang đặc quyền root.
2. Cấu trúc của file /etc/fstab
Vì mỗi hệ thống có các thiết bị khác nhau nên thông tin trong file fstab ở mỗi máy cũng khác nhau. Nhưng về cơ bản, khi bạn nắm được định dạng chung của fstab thì không có gì khó khăn khi xem thông tin trong file này trên các hệ thống khác. Khi lệnh mount được thực thi, hệ thống sẽ đọc thông tin trong file fstab để đưa ra cách xử lý tương ứng. Đây là 1 ví dụ về nội dung của file:

Như bạn thấy, mỗi dòng trong file fstab chứa thông tin về một thiết bị. Các cột ở mỗi hàng được phân cách bởi khoảng trắng. Thứ tự các dòng là không quan trọng. Sau đây phần giải thích kỹ hơn ý nghĩa của từng cột:
+ Cột 1: cho biết loại thiết bị (phân vùng, CD/DVD, USB, ISO image…). Đồng thời cũng cho biết đường dẫn tới file đại diện cho thiết bị (device file) . Trong Linux, mọi tài nguyên phần cứng lẫn phần mềm đều được xem là file, các device file thường nằm ở thư mục /dev
+ Cột 2: đường dẫn của mount point, là một thư mục trống được tạo sẵn trong cây thư mục. Khi gõ lệnh mount, nếu bạn không chỉ định rõ mount point thì đây là mount point mặc định cho thiết bị ở cột 1. Thư mục chứa mount point thường là /mnt hay /media , mặc dù bạn có thể mount thiết bị vào bất cứ thư mục trống nào.
+ Cột 3: là kiểu filesystem của thiết bị. Linux hỗ trợ nhiều kiểu filesystem, dưới đây là 1 số filesystem phổ biến:
- Ext2 và Ext3: điểm khác biệt lớn nhất giữa 2 loại filesystem này là ext3 hỗ trợ tính năngjournaling, tức là khi bạn tắt máy không đúng cách (do cúp điện đột ngột, hệ thống bị treo nên phải nhấn nút khởi động lại…) thì khả năng mất mát dữ liệu ở mức thấp, đồng thời hệ điều hành sẽ không phải tốn thời gian để kiểm tra, tìm lỗi trên filesystem trong lần khởi động kế tiếp.
- ReiserFS: cũng hỗ trợ tính năng journaling nhưng có thêm nhiều tính năng nổi trội hơn so với ext3. Ngày nay ext3, ReiserFS được chọn là filesystem mặc định trên nhiều bản phân phối Linux.
- swap: phân vùng làm không gian bộ nhớ ảo, dùng để bổ sung thêm bộ nhớ cho hệ thống khi hệ điều hành phát hiện việc thiếu hụt bộ nhớ RAM.
- Vfat (FAT16, FAT32) và NTFS: đây là các filesystem được Windows hỗ trợ.
- nfs: dành cho các tài nguyên ở xa, được chia sẻ qua mạng sử dụng NFS
- auto: đây không phải là 1 filesytem. Nó có nghĩa là hệ thống sẽ tự động nhận diện loại filesystem của thiết bị khi thiết bị đó được mount.
+ Cột 4: là các tùy chọn khi mount.
Nếu có nhiều tùy chọn thì chúng được phân cách bởi dấu phẩy. Dưới đây là 1 số tùy chọn đáng chú ý:
- auto: tự động mount thiết bị khi máy tính khởi động.
- noauto: không tự động mount, nếu muốn sử dụng thiết bị thì sau khi khởi động vào hệ thống bạn cần chạy lệnh mount.
- user: cho phép người dùng thông thường được quyền mount.
- nouser: chỉ có người dùng root mới có quyền mount.
- exec: cho phép chạy các file nhị phân (binary) trên thiết bị.
- noexec: không cho phép chạy các file binary trên thiết bị.
- ro (read-only): chỉ cho phép quyền đọc trên thiết bị.
- rw (read-write): cho phép quyền đọc/ghi trên thiết bị.
- sync: thao tác nhập xuất (I/O) trên filesystem được đồng bộ hóa.
- async: thao tác nhập xuất (I/O) trên filesystem diễn ra không đồng bộ.
- defaults: tương đương với tập các tùy chọn rw, suid, dev, exec, auto, nouser, async
+ Cột 5 là tùy chọn cho chương trình dump, công cụ sao lưu filesystem. Điền 0: bỏ qua việc sao lưu, 1: thực hiện sao lưu.
+ Cột 6 là tùy chọn cho chương trình fsck, công cụ dò lỗi trên filesystem. Điền 0: bỏ qua việc kiểm tra, 1: thực hiện kiểm tra
Kết luận:
File /etc/fstab cung cấp các chỉ dẫn cho hệ điều hành trong việc nhận diện, quản lý việc mount các thiết bị. Đồng thời việc cấu hình lại file fstab cũng giúp ích cho bạn trong việc giảm bớt thời gian mount thiết bị bằng lệnh cũng như là kiểm soát việc truy cập tới thiết bị của người dùng.
–manthang

Trong bài viết “Cài đặt Nginx và PHP-FPM trên CentOS 6” mình đã trình về những bước cài đặt và cấu hình cơ bản của Nginx + PHP-FPM. Trong bài viết tiếp theo này mình sẽ trình bày về một số cách tối ưu, giúp chúng ta dễ dàng hơn trong việc quản lý, cũng như duy trì hệ thống Web Server trên nền Nginx.
Đọc tiếp...

Đối với người quản trị hệ thống mạng thì việc monitor và troubleshoot hệ thống là công việc thiết yếu thường phải thực hiện thường xuyên. Trong bài viết này mình sẽ giới thiệu một số công cụ nhỏ nhưng hiệu quả cao, đa số đều có sẵn trên hệ điều hành Linux để giúp chúng ta có thể thực hiện được công việc quản trị tốt hơn khi làm việc trong môi trường dòng lệnh.
Đọc tiếp...
I – Giới thiệu:
vnStat là một công cụ nhỏ gọn chạy ở chế độ console giúp chúng ta có thể monitor lưu lượng mạng trên từng interface của hệ thống Linux. Tiện ích này dùng chính những thống kê trên các interface được kernel của hệ điều hành trả về để xử lý. Vì thế, vnStat sẽ không cài thêm bất kỳ thành phần nào khác để monitor hay ghi logs của hệ thống mạng.
Đọc tiếp...