Дипломная работа студента 5 курса

Вид материалаДиплом

Содержание


3 Система удалённого доступа для вычислительных кластерных систем
3.1Установка и настройка пакета MPICH
Таблица 3.1. Пути к подключаемым файлам
3.2Описание системы удалённого управления вычислительным кластером
3.2.1 Клиентская часть
Удаление файлов
Подобный материал:
1   2   3   4   5   6   7

3 Система удалённого доступа для вычислительных кластерных систем


Система удалённого доступа реализована для кластера состоящего из компьютеров учебного класса на основе процессоров Intel Pentium и стоящей на них ОС Windows.

3.1Установка и настройка пакета MPICH


Пакет MPICH[5] существует в двух вариантах: для ОС Linux и для ОС Windows. Мы остановим свой выбор на пакете для ОС Windows т.к. кластер стоит под управлением этой системы.

Разархивируем содержимое инсталляционного файла в локальную папку C:\Apps\mpich. После этого следует прописать пути к программам и подключаемым файлам для всех пользователей кластера, либо для системы в целом.

Необходимо добавить пути (path) к подключаемым файлам и программам библиотеки MPICH в переменные path, include и lib. Для нашего примера пути описаны в таблице 3.1.

Таблица 3.1.

Пути к подключаемым файлам

include

C:\Apps\Microsoft Visual Studio\VC98\atl\include;

C:\Apps\Microsoft Visual Studio\VC98\mfc\include;

C:\Apps\Microsoft Visual Studio\VC98\include;

C:\Apps\mpich\include;C:\Apps\mpich\mpe\include

lib

C:\Apps\Microsoft Visual Studio\VC98\mfc\lib;

C:\Apps\Microsoft Visual Studio\VC98\lib;

C:\Apps\mpich\lib

path

%SystemRoot%\system32;

%SystemRoot%;

%SystemRoot%\System32\Wbem;

C:\Apps\mpich\bin;

C:\Apps\mpich\lib;

C:\Apps\Microsoft Visual Studio\VC98\Bin;

C:\Apps\Microsoft Visual Studio\Common\Tools;

C:\Apps\Microsoft Visual Studio\Common\MSDev98\Bin;

C:\Apps\Microsoft Visual Studio\Common\Tools\WinNT



Обратим внимание, что у MPICH в переменную path попадают 2 папки: bin и lib, так как в lib содержится библиотека mpich.dll, необходимая для работы MPICH программ.

Далее необходимо установить mpd (multi-purpose daemon) в качестве системного сервиса, вызвав из папки C:\Apps\mpich\bin команду

mpd -install -interact

Для получения списка машин, которые будут использоваться для запуска MPI программ, нужно сконфигурировать mpd, вызвав его с опцией –console:

mpd -console

либо с помощью программы mpiconfig без параметров:

mpiconfig.

При вызове этой программы появляется окно, выбрав кнопку “Select” и в появившемся диалоге режим “Action/Scan hosts”, можно получить список доступных машин кластера, затем установить этот список в переменную “hosts” в mpd (“Apply all”).

Для установки пользователя, с правами которого запускаются MPI программы, существует команда

mpiregister

без параметров. Она запросит имя и пароль пользователя, затем запросит подтверждение на внесение данных. Данные с настройками mpd хранятся в реестре Windows в ключе HKEY_LOCAL_ MACHINE\ SOFTWARE\MPICH\MPD, т.е. едины для всех пользователей данной машины, в отличие от данных о пользователе, которые сохраняются в ключе реестра HKEY_CURRENT_USER\Software\MPICH и, следовательно, для каждого пользователя свои. Теперь, перезагрузив OC Windows, можно проверить правильность установки MPICH, запустив примеры.

3.2Описание системы удалённого управления вычислительным кластером


Для реализации системы был выбран путь подключения к кластеру через Internet посредством web-браузера. Для этого система разделялась на две части: 1 – клиентская часть (web-сайт для работы с конечным пользователем), 2 – серверная часть (сервис, отвечающий за выполнение задач на кластере).

3.2.1 Клиентская часть


Для разработки клиентской части были использованы такие технологии как: ASP.Net[6], Microsoft .Net Framework 1.1, MySQL Server[7]. ASP.Net и Microsoft .Net Framework 1.1 были применены в написании сайта, а MySQL для хранения данных о пользователе и задачах поставленных им.

На сайте реализованы автоматическая регистрация, безопасность соединения для пользователя, страницы для управления кластером и удалённого администрирования кластера.

Безопасность соединения осуществляется посредством аутентификации, т.е. ввода Имени пользователя и Пароля (рис. 7). Для того чтобы пользователь не мог сразу зайти на страницу управления кластером, было использовано переменные Session и написан объект SessionSequencer, контролирующий положение пользователя на сайте:

Imports System.Web

Public Class SessionSequencer

Private expectedPage As String

Private requestedPage As String

Private sequenceIndex As Integer

Private sequence() As String = {"login.aspx", "general.aspx"}

Private Request As HttpRequest

Private Response As HttpResponse

Private Session As SessionState.HttpSessionState

Public Sub New()

Request = HttpContext.Current.Request

Response = HttpContext.Current.Response

Session = HttpContext.Current.Session

If Session("sequenceIndex") Is Nothing Then

Session("sequenceIndex") = 0

End If

sequenceIndex = Session("sequenceIndex")

requestedPage = Request.ServerVariables("SCRIPT_NAME").ToLower

requestedPage = requestedPage.Substring(requestedPage.LastIndexOf("/") + 1)

If sequenceIndex < 0 Or sequenceIndex > sequence.GetUpperBound(0) Then

sequenceIndex = 0

End If

expectedPage = sequence(sequenceIndex)

If requestedPage <> expectedPage Then

Response.Redirect(expectedPage)

End If

End Sub

Public Sub showSessionVars()

Dim aKey As String

For Each aKey In Session.Keys

Response.Write(aKey & "=" & Session.Item(aKey) & "
")

Next

End Sub

Public Sub NextPage()

If sequenceIndex + 1 < sequence.GetLength(0) Then

sequenceIndex += 1

Else

sequenceIndex = sequence(sequence.GetUpperBound(0))

End If

Session("sequenceIndex") = sequenceIndex

Session("sequence") = sequence(sequenceIndex)

Response.Redirect(sequence(sequenceIndex))

End Sub

End Class




Рис. 7 Вид страницы Аутентификации.


Регистрация пользователя (Рис. 8) доступна автоматически и данные сохраняются в базе данных MySQL:



Рис. 8 Страница Регистрации пользователя.


Главная страница удалённого управления кластером (Рис. 9) позволяет: просматривать содержимое личной папки пользователя на сервере; скачивать, удалять и закачивать файлы на сервер; компилировать файлы и ставить их в очередь на выполнение.



Рис. 9 Страница Удалённого управления кластером.


Удаление файлов:

Dim fi As FileInfo

fi = New FileInfo("c:\inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\" & Session("selectfile"))

If fi.Exists Then

fi.Delete()

End If

Response.Redirect("general.aspx")


Закачка файлов на сервер:

Dim filename As String = File1.PostedFile.FileName.Remove(0, File1.PostedFile.FileName.LastIndexOf("\") + 1)

If File1.PostedFile.ContentLength > 1048576 Or File1.PostedFile.FileName = "" Then

Label3.Text = "Файл не закачан: или файл больше положенного размера или введён неправильный путь."

Response.Redirect("general.aspx")

Else : File1.PostedFile.SaveAs("C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\" & filename)

Label3.Text = "Файл успешно закачан."

'ListBox1.Items.Clear()

Response.Redirect("general.aspx")

End If


Компилирование файлов:

If Me.TextBox1.Text = "" Then

Label1.Text = ""

Response.Redirect("general.aspx")

Else

Dim clfile As String = Session("compilefile")

Dim str As String = clfile & " mpich2.lib"

Dim _pi As New ProcessStartInfo("cl", str)

_pi.UseShellExecute = False

_pi.RedirectStandardInput = True

_pi.RedirectStandardOutput = True

_pi.WorkingDirectory = "C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\"

Dim _pr As Process = Process.Start(_pi)

Label1.Text = ""

Response.Redirect("general.aspx")

End If


Постановка файлов на выполнение:

Session("comp") = DropDownList1.SelectedValue

Session("process") = TextBox3.Text

Session("parametrs") = TextBox5.Text

Session("time") = TextBox4.Text

Session("email") = CheckBox1.Checked

If TextBox2.Text = "" Then

Label1.Text = ""

Response.Redirect("general.aspx")

Else

Dim myConnectionString As String = "Database=information;Data Source=localhost;User Id=tol;Password=tol"

Dim myConnection As New MySqlConnection(myConnectionString)

Dim myInsertQuery As String = "INSERT INTO files (comp, process, directory, filename, parametrs, queue, time, email) Values(" & Session("comp") & "," & Session("process") & ",'" & Session("directory") & "','" & Session("runfile") & "','" & Session("parametrs") & "'," & 0 & "," & Session("time") & "," & Session("email") & ")"

Dim myCommand As New MySqlCommand(myInsertQuery)

myCommand.Connection = myConnection

myConnection.Open()

myCommand.ExecuteNonQuery()

myCommand.Connection.Close()

Response.Redirect("general.aspx")

End If

На странице удалённого администрирования (Рис. 10) расположены элементы просмотра содержимого личной папки; скачивания, удаления и закачки файлов на сервер; управление кластером через командную строку, а так же состояние работы кластера.



Рис. 10 Страница Администрирования кластера.


Управление кластера через командную строку:

If TextBox1.Text = "" Then

Label1.Text = ""

Response.Redirect("admin.aspx")

Else

Dim _pi As New ProcessStartInfo(TextBox1.Text, TextBox2.Text)

_pi.UseShellExecute = False

_pi.RedirectStandardInput = True

_pi.RedirectStandardOutput = True

_pi.WorkingDirectory = "C:\Inetpub\wwwroot\cluster\usersdirectory\" & Session("directory") & "\"

Dim _pr As Process = Process.Start(_pi)

Label1.Text = ""

Response.Redirect("admin.aspx")

End If

Состояние кластера:

Dim SessionSequencer As New SessionSequencer3

Dim DirStr As String = Session("directory")

'ListBox1.Items.Clear()

Dim di As New DirectoryInfo(Server.MapPath(".") & "\usersdirectory\" & DirStr)

Dim fi As FileInfo

For Each fi In di.GetFiles

Me.ListBox1.Items.Add(fi.Name)

Next

Dim mySelectQuery As String = "SELECT * FROM files"

Dim mySelectQuery2 As String = "SELECT * FROM computers"

Dim myConnection As New MySqlConnection("Database=information;Data Source=localhost;User Id=tol;Password=tol")

Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)

Dim myCommand2 As New MySqlCommand(mySelectQuery2, myConnection)

myConnection.Open()

Dim myReader As MySqlDataReader

myReader = myCommand.ExecuteReader()

DataGrid1.DataSource = myReader

DataGrid1.DataBind()

myReader.Close()

Dim myReader2 As MySqlDataReader

myReader2 = myCommand2.ExecuteReader()

DataGrid2.DataSource = myReader2

DataGrid2.DataBind()

myReader2.Close()

myConnection.Close()